也许有一个非常逻辑的解释,但我似乎无法理解为什么使用.NET的Random Class (System)时,种子
快速代码示例:
0
和2,147,483,647
会产生相同的“随机”序列。快速代码示例:
var random1 = new Random(0);
var random2 = new Random(1);
var random3 = new Random(int.MaxValue); //2,147,483,647
var buffer1 = new byte[8];
var buffer2 = new byte[8];
var buffer3 = new byte[8];
random1.NextBytes(buffer1);
random2.NextBytes(buffer2);
random3.NextBytes(buffer3);
for (int i = 0; i < 8; i++)
{
Console.WriteLine("{0}\t\t{1}\t\t{2}", buffer1[i], buffer2[i], buffer3[i]);
}
输出:
26 70 26
12 208 12
70 134 76
111 130 111
93 64 93
117 151 115
228 228 228
216 163 216
您可以看到,第一和第三个序列是相同的。有人能解释一下这个吗?
编辑:正如alro指出的那样,这些序列并不相同。但它们非常相似。
System.Random
在许多方面都有设计缺陷,这是其中之一。 - CodesInChaos