java - 如何生成 -1/2 到 1/2 之间的随机值

标签 java math random

我正在尝试找出一种方法来生成介于 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()返回 01 之间的随机 double 值,因此要将范围从 -1/2 更改为 1/2,我们可以减去 1/2(因为 0 - 1/2 = -1/21 - 1/2 = 1/2):

Math.random() - 0.5

你现在做的是更一般的,即如果你想要 minmax 之间的 double ,则适当的表达式是

min + Math.random() * (max - min)

在这种情况下,插入 min = -0.5max = 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/

相关文章:

java - Hibernate 和 Mysql 超时问题,不适用于 c3p0

java - 如何将奇数索引转换为索引 {0,1,2,3,4,5}?

C算术、取模

javascript - 如何在选择按钮时使每个图像都不同,不应该出现两个相同的图像

英国电话号码和电话代码的 Java 正则表达式

java - 运行 Java 应用程序和 PHP

java - 如何舍入到下一个最接近的 30 系列

c++ - 给定一个未知长度的列表,通过仅扫描 1 次返回其中的随机项目

Python-生成特定自相关的数组

java - 设计 RESTful 登录服务