gpt4 book ai didi

Scala Random创建随机对象时种子会做什么

转载 作者:行者123 更新时间:2023-12-04 10:07:51 27 4
gpt4 key购买 nike

我是 scala 的新手,所以这可能是一个愚蠢的问题。我知道当您执行nextInt(seed)时,它会使用种子,但是当您创建对象时,种子的作用是什么?例如,在以下代码行中:

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

当您继续使用 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)。

关于Scala Random创建随机对象时种子会做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19315692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com