我想在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中会出现一些内存下降问题吗?
答案 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();
}