java - 随机均匀分布

标签 java random

我知道如果我使用 Java 中的随机生成器,使用 nextInt 生成数字,数字将均匀分布。但是,如果我使用 2 个 Random 实例,用两个 Random 类生成数字,会发生什么情况。数字是否均匀分布?

最佳答案

每个 Random 实例生成的数字将均匀分布,因此如果将两个 Random 实例生成的随机数序列组合起来,它们也应该均匀分布.

请注意,即使生成的分布是均匀的,您也可能需要注意种子以避免两个生成器的输出之间存在相关性。如果您使用默认的无参数构造函数,种子应该已经不同了。来自 java.util.Random 的源代码:

private static volatile long seedUniquifier = 8682522807148012L;

public Random() { this(++seedUniquifier + System.nanoTime()); }

如果您显式设置种子(通过使用 Random(long seed) 构造函数,或调用 setSeed(long seed)),您需要采取你自己关心这个。一种可能的方法是使用随机数生成器为所有其他生成器生成种子。

关于java - 随机均匀分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4253500/

相关文章:

java - 在 Java 中使用 Trie 自动完成

java - 如何打印字符串中的随机字符?

Java随机生成两位小数格式的价格

java - 每次用户单击按钮时从 txt 或 CSV 文件中随机选择记录/行的最佳方法是什么?

java - 只接受字符、数字和特殊字符的正则表达式

java - 在 Tomcat 上部署 Spring Boot + WebSocket + Stomp

java - 捕获屏幕截图并将其转换为 base64 字符串

python - Python中的随机噪声函数

java - 2 个值之间的随机整数

java - 解析 xml : attributes. getValue() 返回 null?