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

时间:2015-10-30 14:03:30

标签: java list random double

我想在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);
}

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

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

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

1 个答案:

答案 0 :(得分:11)

您可以使用Java Random类:

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

返回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();
}