簡體   English   中英

Scala隨機種子在創建隨機對象時做了什么

[英]Scala Random what does seed do when creating random object

我對scala相當新,所以這可能是一個愚蠢的問題。 我知道當你做nextInt(seed)它會使用種子但是當你創建對象時,它的種子是什么? 例如,在這行代碼中:

val rnd = new scala.util.Random(1000)

當你繼續使用rnd.nextInt(100)或類似的rnd.nextInt(100)時,這似乎對數字的結果沒有影響。

當調用nextInt(n)n 不是種子 ,它是返回的偽隨機數的上限(0到n)。

創建 Random實例時,傳遞的數字是種子 它確實對結果有影響:

val r1 = new scala.util.Random(1)
r1.nextInt(1000)  // -> 985
val r2 = new scala.util.Random(2)
r2.nextInt(1000)  // -> 108 - different seed than `r1`
val r3 = new scala.util.Random(1)
r3.nextInt(1000)  // -> 985 - because seeded just as `r1`

種子永遠不會在返回的數字中直接觀察到(除了它們遵循不同的序列),因為a)它在內部進一步加擾,b)生成的數字使用種子上的多個按位運算的組合。

通常,您將為種子使用任意固定數字,以保證生成的序列是可重現的,或者您使用另一個偽隨機數,例如當前計算機時鍾(例如System.currentTimeMillis )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM