我使用随机字符串生成器,基于此: http://stackoverflow.com/questions/1344221/how-can-i-generate-random-8-character-alphanumeric-strings-in-c
每隔一段时间,它会生成一个20个字符的len字符串 aaaaaaaaaaaaaaaaaaaa 当需要生成一个充满随机字符的20个字符len字符串(例如 63TSRVvbVDJiMNwneB5l )时20次迭代。
public static string GetRandomAlphaNumericString(int charCount)
{
var result = new string(
Enumerable.Repeat(CHARS, charCount)
.Select(s =>
{
var nxt = SHARED_RANDOM.Next(s.Length);
var rval = s[nxt];
return rval;
})
.ToArray());
return result;
}
const string CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
public static Random SHARED_RANDOM = new Random(Guid.NewGuid().GetHashCode());
对我来说没有意义,我可以在这台发电机上监督什么?发电机工作正常,但是偶尔,非常罕见,它会像这样在短时间内产生一个打击aaaaaaa字符串。
我没有看到代码中的错误,所以对我来说,它是2件事中的一件,或者C#Random对象在某些情况下表现得很有趣,在短时间内返回0,或者CHARS const字符串从" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"到" a"在装配中由于某种原因,在短时间内。
我无法相信它可能是上述任何一种,我更愿意相信我会监督某些事情。你看到或想象这怎么可能发生?
编写测试例程,如果 GetRandomAlphaNumericString 产生邪恶的 aaaaa 字符串,则会抛出错误,但会在之前记录快速报告。
该报告连续生成3个随机数,并将其添加到日志中:
SHARED_RANDOM.Next(20);
SHARED_RANDOM.Next(20);
SHARED_RANDOM.Next(20);
产生的3个数字是0,很好呃?
这告诉我问题不是 GetRandomAlphaNumericString ,而是Random对象本身。 有某种腐败导致对象返回那些结果,所以基本上它可以是任何东西?!