Java Math.random 闭双区间

标签 java random

如何在 Java 中生成闭区间 [x;y] 内的随机 double 值,例如 [0;10]? Math.random() 的 API 表示它返回 [0;1) 中的值,因此乘以 10 没有帮助(以及乘以 11)。

最佳答案

编辑:我已经进一步研究过。

要获取下一个可能更高的 double 值,请使用 Math.ulp(double)

double number = 10.0 + Math.ulp(10.0);

10.0 的下一个较高值是 10.000000000000002

如果是随机数生成:

double randomNumber = Math.random() * (10.0 + Math.ulp(10.0));

https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#ulp(double)

<小时/>

我的旧理论并不正确:

2e-1074 是 double 类型的最小正非零值。 其常量是Double.MIN_VALUE。因此,将 10 + 2e-1074Math.random() 相乘理论上应该会得到一个 [0;10] 范围内的随机数

double randomNumber = Math.random() * (10.0 + Double.MIN_VALUE);

Double.MIN_VALUE 的 Java 文档:https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#MIN_VALUE

关于Java Math.random 闭双区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58920019/

相关文章:

python - 从一个很长的迭代中随机抽样,在 python 中

sorting - Hadoop 在单节点集群上运行排序示例

java - Spring 不显示 home.html

java - 用 Java 或 Javascript 处理 JSON 更好?

java - 线程 “main”中的异常java.lang.NoClassDefFoundError : javapasswords in Linux [closed]

r - mvrnorm(来自 MASS)与 rmvnorm(来自 mvtnorm)

php - 使用 PHP rand() 预测随机数的可能性

python - 从列表中互斥随机抽样

java - 如何按递增顺序生成随机数

java系统范围的键盘和鼠标状态