Java Math.random() 有多随机?

标签 java random

我正在做一个项目,它需要从给定范围内生成两个随机数(同时生成两个随机数,一个接一个)并检查它们是否彼此相等——如果相等,则继续执行另一个代码;如果不是 - 再次生成数字。现在我的问题是,如果我们有一个范围 [0;10],并且第一个随机生成的数字结果是 5,那么第二个数字也是 5 的概率是否与任何其他数字一样好?具体来说, Math.random() 如果连续调用两次,是否有任何“防御”来防止生成相同的数字?或者它“尝试”不生成相同的数字?

最佳答案

连续两次在 [0,10] 范围内生成相同的数字对于任何随机数生成器来说都是完全有效的。如果它采取任何措施来防止它不会是随机的。

在任何调用中,选择任何单个数字的机会应该是 1:11,并且每个选择应该独立于之前的选择,因此在一对中第二个数字与第一个匹配的机会是 11 中的 1。

至于 Math.random() 的随机性,它是伪随机,这意味着它使用一种算法生成一系列以 "开头的均匀分布的数字种子”的值(value)。它不适用于密码学,但非常适合模拟和其他非密码用途。

关于Java Math.random() 有多随机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20172339/

相关文章:

java - 我将如何用java编写这个python代码

Java:向上转换为父类(super class)并从子类调用函数

database - Postgresql:将不同/分组与 ORDER BY RANDOM() 结合起来

android - 如何将随机图像设置为 ImageView 的?

java - 初学者,循环

java - 这是使用扫描仪扫描多个输入的方法吗

math - lua : pick a random parameter passed into it 中的简单函数

c - 如何让函数通过命令行打印出一定数量的随机数? C

java - 1.6 环境中出现奇怪的 IOException pre 1.6 错误

python - 在 C 中生成幂律分布并使用 python 进行测试