java中包含0.0到1.0之间的随机浮点数

时间:2012-05-10 14:28:54

标签: java random

  

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

我正在开发一个项目,我需要0.0到1.0之间的随机浮点数。经过一段时间的考虑,我发现它对我的项目来说可能并不重要,所以我只是使用标准:

new Random().nextFloat();

生成从0.0(inlcusive)到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;

但我认为这应该更简单?所以我真正的问题是:有没有真正的或更好的方法呢?

1 个答案:

答案 0 :(得分:-3)

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