Random r = new Ranmom(47)

new Random(47);
相當於
Random rnd = new Random();
rnd.setSeed(47);

一般計算機的隨機數都是僞隨機數,以一個真隨機數(種子)作爲初始條件,然後用一定的算法不停迭代產生隨機數。

setSeed 的方法介紹:
使用單個 long 種子設置此隨機數生成器的種子。
setSeed 的常規協定是它更改此隨機數生成器對象的狀態,使其狀態好像是剛剛使用參數 seed 作爲種子創建它的狀態一樣。
通過將種子自動更新爲 (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1)並清除nextGaussian()使用的haveNextNextGaussian 標誌,Random 類可實現 setSeed 方法。 
Random 類實現的 setSeed 恰好只使用 48 位的給定種子。
但是,通常重寫方法可能使用 long 參數的所有 64 位作爲種子值。


隨機數種子就是產生隨機數的第一次使用值, 機制是通過一個比較複雜的函數,將這個種子的值轉化爲隨機數空間中的某一個點上,並且產生的隨機數均勻的散佈在空間中。 以後產生的隨機數都與前一個隨機數有關。

由此看來,對於一些由數學封裝好的方法,沒必要深究,不過有興趣的話另說。

47作爲隨機種子用,爲的就是產生隨機數。
而爲了每次取得隨機數不同,隨機種子必須也要不同才行。

如果用構造一個指定種子的Random,則如果所指定的種子相同(本例爲47),
且調用的方法相同,則產生的隨機數也相同。

發佈了41 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章