[英]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.