關於Random中的隨機數種子Seed


  Random初始化的時候,可以以一個INT32作為參數,稱為seed,MSDN上的解釋是:“偽隨機數是以相同的概率從一組有限的數字中選取的......隨機數的生成是從種子值開始......”

  所有標准庫提供的Random函數其實都是假Random,提供的隨機數也是偽隨機數,真正的Random函數式不需要Seed的。所謂假Random,是指所返回的隨機數字其實是一個穩定算法所得出的穩定結果序列,而不是真正意義上的隨機序列。 Seed就是這個算法開始計算的第一個值。所以就會出現只要seed是一樣的,那么后續所有“隨機”結果和順序也都是完全一致的。 通常情況下,你可以用 DateTime.Now.Millisecend() 也就是當前始終的毫秒來做Seed .因為毫秒對你來說是一個1000以內的隨即數字。 這樣可以大大改善保准庫的Random結果的隨機性。 不過這仍然算不上是完全隨機,因為重復的概率還是千分之一。

  需要注意的是,如果一直調用標准庫Random,那么在調用了N次以后,輸出結果就會循環最開始的序列了。也就是說,標准庫Random所能生成的不同結果的個數也是有限的。32位系統一般也就是幾萬次以后就會出現重復。可以到網上找一個真正的隨機函數,以替換標准庫Random。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM