也許有一個非常邏輯的解釋,但我似乎無法理解爲什麼種子0
和2,147,483,647
產生相同的「隨機」序列,使用.NET的Random Class (System) 。兩個不同的種子產生相同的「隨機」序列
快速代碼例如:
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
+1非常有趣的觀察! – quetzalcoatl