生成包含在指定值区间中的随机浮点值的最佳方法是什么?
2022-09-01 02:49:52
我想在Java中生成一个随机浮点值。该值必须在可能值的特定范围内。
例如,我必须生成一个在以下范围内的随机值:
MIN: 41,815080
MAX: 41,829191
这些值恰好表示地图上可能的经度范围,但该问题更普遍地适用。
什么是明智的方法?
我想在Java中生成一个随机浮点值。该值必须在可能值的特定范围内。
例如,我必须生成一个在以下范围内的随机值:
MIN: 41,815080
MAX: 41,829191
这些值恰好表示地图上可能的经度范围,但该问题更普遍地适用。
什么是明智的方法?
对于范围内的随机值,公式为:
double random = min + Math.random() * (max - min);
无论您使用什么来生成随机数,此基本公式都是常量。
Math.random()
提供分布适中的数字,但您可以将其替换为所需的任何随机数生成器,例如(稍微好一点):
Random r = new Random();
double random = min + r.nextDouble() * (max - min);
或者如果你真的想要一个:float
float random = min + r.nextFloat() * (max - min);
为了获得更好的质量(以速度为代价)随机数生成使用
Random random = new SecureRandom();
或者,您可以使用更具异国情调的第三方库,例如:
import org.apache.commons.math3.random.RandomDataGenerator;
RandomData random = new RandomDataGenerator();
它使用优越的Well19937c算法。
如果要生成随机浮点值,请尝试以下操作:
import java.util.Random;
public static float randFloat(float min, float max) {
Random rand = new Random();
return rand.nextFloat() * (max - min) + min;
}
希望这有帮助。