正确生成随机数

托马斯·格里夫(Tomas Greif)

我想为我处理的每个对象使用5个随机数。我(分别)处理许多对象,并且需要确保所有数字都具有随机性。如果我处理5个对象,我将有25个随机数:

         RN1 RN2 RN3 RN4 RN5
Object 1   1   2   3   4   5
Object 2   6   7   8   9  10
Object 3  11  12  13  14  15
Object 4  16  17  18  19  20
Object 5  21  22  23  24  25

问题是:

  • 对于单个对象,如果我使用当前时间(以毫秒为单位)为每个数字创建一个随机数生成器,或者当我创建一个随机数生成器并使用nextDouble随机性质量获得一系列数字时,这会有所不同吗?
  • 一旦我处理了多个对象,并取了所有对象的所有第一个随机数,这些将形成均匀的随机分布(例如,数字1、6、11、16、21)还是会以某种方式破坏?

我的观点是最好只创建一个随机数生成器(由所有对象共享),以便每当需要新的随机数时,我都可以调用nextDouble()并获取随机数序列中的下一个数字。

Jopasserat

看一下ThreadLocalRandomJava中的类。

它提供了均匀的分布并避免了瓶颈,因为每个线程都有自己的副本。

关于它们具有不同的顺序,这全都在于改变它们的种子。在这种情况下,一种常见的做法是查看带有线程/任务/进程标识符的生成器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章