Scala随机种子在创建随机对象时做了什么
发布时间:2020-12-16 18:43:14 所属栏目:安全 来源:网络整理
导读:我对 scala相当新,所以这可能是一个愚蠢的问题.我知道当你做nextInt(种子)时它会使用种子但是当你创建对象时,它的种子是什么?例如,在这行代码中: val rnd = new scala.util.Random(1000) 当你继续使用rnd.nextInt(100)或类似的东西时,这似乎对数字的结果没
我对
scala相当新,所以这可能是一个愚蠢的问题.我知道当你做nextInt(种子)时它会使用种子但是当你创建对象时,它的种子是什么?例如,在这行代码中:
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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |