我正在尝试找出一种方法来生成介于 1/2 和 -1/2 之间的随机值。
我尝试了下面的方法,但不确定这是否是正确的方法......
谁能告诉我实现这个的好方法?
public static void main(String args[]) {
double Max = .5;
double Min = -0.5;
for (int i = 0; i < 10000; i++) {
double value = Min + ((Math.random()) * (Max - Min));
System.out.println(value);
}
}
最佳答案
嗯Math.random()
返回 0
和 1
之间的随机 double 值,因此要将范围从 -1/2
更改为 1/2
,我们可以减去 1/2
(因为 0 - 1/2 = -1/2
和 1 - 1/2 = 1/2
):
Math.random() - 0.5
你现在做的是更一般的,即如果你想要 min
和 max
之间的 double ,则适当的表达式是
min + Math.random() * (max - min)
在这种情况下,插入 min = -0.5
和 max = 0.5
我们有
-0.5 + Math.random() * (0.5 - -0.5)
简化为
Math.random() - 0.5
我还应该提到,如果您阅读 random()
方法的文档,您会发现它返回一个 double 大于或等于 到 0.0 和 小于 1.0。这意味着上面的表达式应该产生 [-0.5, 0.5)
范围内的数字,这意味着 -0.5
可能会返回,但 0.5
不可能。
关于java - 如何生成 -1/2 到 1/2 之间的随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16026149/