gpt4 book ai didi

java - 生成 [0,1] 和限制小数之间的 float 随机数

转载 作者:行者123 更新时间:2023-12-02 09:08:55 24 4
gpt4 key购买 nike

我想生成区间 [0,1] 之间的随机 float 。生成的随机值将与文件的输入进行比较。文件的内容是概率(浮点值),因此它们在范围 [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:如果我将上述代码中随机生成的数字与文件中的 double 值进行比较,DoubleList 中是否会出现一些内存下降问题?

最佳答案

你可以只使用Java Random类:

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

返回 0.0f(含)和 1.0f(不含)之间的随机 float 。

要舍入 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();
}

关于java - 生成 [0,1] 和限制小数之间的 float 随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33437868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com