java - 0.0 和 1.0 之间的随机 float 在 Java 中均包含在内

标签 java random

<分区>

Possible Duplicate:
Random floating point double in Inclusive Range

我正在做一个项目,我需要 0.0 和 1.0 之间的随机 float (包括两者)。考虑了一段时间后,我发现它对我的项目来说可能并不那么重要,所以我只使用标准:

new Random().nextFloat();

生成从 0.0(含)到 1.0(不含)的 float 。

但我一直在想,使用 1.0 inclusive 到底是如何实现的?

我能想到的一种方法是(伪代码):

new Random().nextFloat() * (1.0 + "lowest possible value above 0");

我能想到的另一种方法是:

float myRandomFloat = 0;
float rand1 = new Random().nextFloat(); // [0;1)
float rand2 = 1.0f - new Random().nextFloat(); // (0;1]
boolean randPicker = new Random().nextBoolean();
if (randPicker)
    myRandomFloat = rand1;
else
    myRandomFloat = rand2;

但我认为这应该更简单吗?所以我真正的问题是:是否有真正或更好的方法来做到这一点?

最佳答案

如果你将 Random().nextFloat() 乘以 10,它会给你一个从 0 到 9 的数字,这是数字系统中的基数,所以数字 10 并不存在,但它是两个基数的组合数字,所以你永远无法将它作为随机数获取,但如果你真的需要它,我会选择你的第二个选项。

关于java - 0.0 和 1.0 之间的随机 float 在 Java 中均包含在内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10536189/

相关文章:

c - srand 函数是否适用于多个翻译单元?

c - 使用 nanosleep() 随机 sleep

algorithm - 如何按一定比例随机选择

c++ - 随机数生成的问题

java - 在 Android 上使用 OpenCV 提高 Tesseract 性能

java - 实现比较方法的规则

java - ImageIcon 方法无限循环

java - 如何将图像字节传递给 Velocity 模板

java - 如何通过Java抓取CSV文件中的货币格式数字

c++ - 在大表中生成随机数导致崩溃