生成[0,1]和限制小数之间的浮点随机数

Generate float Random number between [0,1] and restricting decimal

我想在区间 [0,1] 之间生成随机浮点数。生成的随机值将与来自文件的输入进行比较。文件的内容是概率(浮点值),因此它们在范围 [0,1] 内,看起来像:

0.55

0.14

0.005

0.870

0.98

0

1

我正在阅读此文件并将概率值存储到 DoubleList 中。现在我想生成一个介于 [0,1] 之间的浮点随机数。如您所见,该文件的概率值最多为 1 位、2 位小数和 3 位小数。 我正在使用以下代码:

public static double randomNumberGenerator()
{
    double rangeMin = 0.0f;
    double rangeMax = 1.0f;
    Random r = new Random();
    double createdRanNum = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
    return(createdRanNum);
}

生成的随机浮点值也应该类似于概率值(就像文件中生成的最大小数位数一样)。如何限制生成的十进制数字?

我检查了以下 Link:Java random number between 0 and 0.06。人们建议生成 Int 数,然后再除以 100。这是好方法吗?不能限制直接生成的小数吗?

PS: 如果我将上述代码中随机生成的数字与 File 中的双精度值进行比较,DoubleList 中是否会出现一些内存下降问题?

你可以只使用 Java Random class :

Random rand = new Random();
float f = rand.nextFloat()

其中returns0.0f(含)到1.0f(不含)之间的随机浮点数。

要舍入 nextFloat() 的结果,您可以使用如下辅助方法:

public static float round(float d, int decimalPlace) {
    BigDecimal bd = new BigDecimal(Float.toString(d));
    bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
    return bd.floatValue();
}