首页 > 解决方案 > 是否可以在没有任何预定义边界的情况下在 Java 中生成随机双精度数?

问题描述

我阅读了有关Math.random()Random的内容,并阅读了几乎所有关于在堆栈溢出时生成随机数的帖子。

我仍然无法弄清楚如何在没有每个定义的边界的情况下生成随机数。

我的意思是,我知道可以写

Random random = new Random();
int mynumber = random.nextInt(max-min) + min;

但是如果我不想提供这些maxmin怎么办?如果我希望它也被生成怎么办?

底线,我的目的是生成一个随机数,它也可以在 和 的范围内为INT_MAX负数INT_MIN

我尝试了几种方法:

 int max = (int)Math.random();
 int min = (int)Math.random();
 double myNumber = new Random().nextInt(max - min) + min;

不起作用,因为(int)Math.random()总是四舍五入为 0。

我也试过:

int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        double myNumber = new Random().nextInt(max - min) + min;

我明白了The call to 'nextInt' always fails as index is out of bounds

我的目的是生成一个随机数double,但Random ().nextInt(x,y)只获得int as x and y。并在提供预定义值的情况下做到这一点max and min

你建议我怎么做?在程序的每次运行时生成一个随机且不同的双精度数?

标签: javarandomcastingintegerdouble

解决方案


Double.longBitsToDouble(new Random().nextLong())

推荐阅读