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

Shu*_*wal 2 java random double list

我想在Interval [0,1]之间生成Random Float数字.生成的Random值将与文件的输入进行比较.文件的内容是概率(浮点值),因此它们在[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);
}
Run Code Online (Sandbox Code Playgroud)

生成的随机浮点值也应该类似于概率值(如生成到文件中的最大十进制数字).如何限制生成的十进制数字?

我检查了以下链接:0到0.06之间的Java随机数.人们建议使用Int数字生成,然后将双重除法除以100.这是好方法吗?我们不能直接限制生成的十进制数吗?

PS:如果我将上面代码中随机生成的数字与File中的double值进行比较,那么DoubleList中会出现一些内存下降问题吗?

ale*_*oot 11

你可以使用Java Random类:

Random rand = new Random();
rand.nextFloat()
Run Code Online (Sandbox Code Playgroud)

它返回0.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();
}
Run Code Online (Sandbox Code Playgroud)