生成[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();
}
我想在区间 [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();
}