【问题标题】:Random float between 0.0 and 1.0 both inclusive in java [duplicate]java中包含0.0和1.0之间的随机浮点数[重复]
【发布时间】:2012-05-19 03:42:52
【问题描述】:

可能重复:
Random floating point double in Inclusive Range

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

new Random().nextFloat();

生成从 0.0(含)到 1.0(不含)的浮点数。

但我不能停止思考它实际上是如何实现 1.0 包容性的?

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

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;

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

【问题讨论】:

    标签: java random


    【解决方案1】:

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

    【讨论】:

    • 10跟什么有什么关系?
    • 如果有任何方法可以将 Random().nextFloat() 乘以 10,那么您也可以得到 1,这将是这个问题的解决方案。
    • mm乘以11,然后用round,你会得到0到10之间的数字均匀分布
    猜你喜欢
    • 2012-12-18
    • 2018-04-03
    • 1970-01-01
    • 2023-03-08
    • 2013-07-17
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    相关资源
    最近更新 更多