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)