可能重复:
随机数生成器仅生成一个随机数
我已将在更大系统中观察到的行为提炼成以下代码序列:
for (int i = 0; i < 100; i++)
{
Random globalRand = new Random(0x3039 + i);
globalRand.Next();
globalRand.Next();
int newSeed = globalRand.Next();
Random rand = new Random(newSeed);
int value = rand.Next(1, 511);
Console.WriteLine(value);
}
从面向 .NET 4.5 的 Visual Studio 2012 运行此程序将输出 316 或 315。将其扩展超过 100 次迭代,您会看到该值缓慢递减(314、313...),但它仍然不是我想象的那样任何人都会考虑“随机”。
编辑
我知道 StackOverflow 上已经有几个问题询问为什么它们的随机数不是随机的。但是,这些问题存在以下问题:a)没有将种子(或相同的种子)传递给它们的 Random 对象实例,或者 b)做类似的事情NextInt(0, 1)
并且没有意识到第二个参数是排他性的界限。对于这个问题,这些问题都不是真的。