java - 正确生成随机数

标签 java random

我希望为我处理的每个对象提供 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() 并获取下一个数字随机数序列。

最佳答案

看看 ThreadLocalRandom来自 Java 的类。

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

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

关于java - 正确生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27252557/

相关文章:

java - 有没有办法在Javadoc中引用bean的属性(getter和setter)?

java - Lucene通过ID检索文档速度慢

java - 尝试在Mac上编译使用jsoup包的java程序

go - 在 go 中生成一个随机 boolean 值

mysql - 随机选择记录并分组(随机分区行)

java.lang.ClassNotFoundException : org. elasticsearch.common.transport.TransportAddress

Java Spring 与 swagger2 未启动服务器

python - 我想在 gnuplot 的文本文件中绘制一个具有给定 4 个坐标的矩形。矩形可能与 x 轴成一定角度

c++ - 在 C++ 中生成随机数的最佳方法是什么?

python - 在python中,如何生成一个范围内的随机整数,不包括列表中的某些数字?