今天,我的朋友有一個想法,設置使用產生「使事情變得更加隨機」的僞隨機數的僞隨機數生成器多次的種子。「重置」僞隨機數發生器種子多次?
在C#中的一個例子:
// Initiate one with a time-based seed
Random rand = new Random(milliseconds_since_unix_epoch());
// Then loop for a_number_of_times...
for (int i = 0; i < a_number_of_times; i++)
{
// ... to initiate with the next random number generated
rand = new Random(rand.Next());
}
// So is `rand` now really random?
assert(rand.Next() is really_random);
但我在想,這大概可以增加獲得正在使用的僞隨機數生成器的重複種子的機會。
這
- 會讓事情變得更加隨機,
- 進行循環,通過使用一定數量的種子,或
- 無助於隨機性(即既不增加也不減少)?
僞隨機數發生器的任何專家能給出一些詳細的解釋,以便說服我的朋友嗎?我很樂意在某些僞隨機數生成器算法中看到解釋更多細節的答案。
ou ...你最好的選擇是(xkcd)擲骰一次,並簡單地使用它作爲一個常數。 Nahw只是開玩笑 - 計算機不能使隨機數字非常好。每個非僞隨機都使用外部(如物理測量)源來進行初始化和隨機...因此,對於正常的隨機數在應用程序中使用其他任何類似time.h(正如您已經這樣做)這樣的麻煩是不值得的。如果你真的需要隨機數,考慮使用硬件 – Najzero
@Najzero嗯,只是想了解更多關於僞數字發生器的知識,所以我不會爲此得到一個核衰變檢測器。 :) –
ffffshhh ...沒有承諾更多,一切或http://xkcd.com/221/ – Najzero