Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Random种子在创建随机对象时做什么_Scala_Random_Random Seed - Fatal编程技术网

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

Scala Random种子在创建随机对象时做什么,scala,random,random-seed,Scala,Random,Random Seed,我对scala相当陌生,所以这可能是个愚蠢的问题。我知道当您执行nextInt(seed)时,它会使用种子,但是当您创建对象时,种子是用于什么的?例如,在这一行代码中: val rnd = new scala.util.Random(1000) 当您继续使用rnd.nextInt(100)或类似工具时,这似乎对数字的结果没有影响。当调用nextInt(n)时,n不是种子,而是返回的伪随机数的上限(0到n) 创建Random的实例时,传递的数字是种子。它确实会对结果产生影响: val r1 =

我对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
)。

我还将提到java/scala中的两种类型的随机数——和。这些页面还包含种子的解释和一些相关信息。