在一个范围内生成一个随机double

我有两个双打,如下所示

double min = 100;
double max = 101;

和一个随机发生器,我需要在最小和最大范围之间创建一个双值。

Random r = new Random();
r.nextDouble();

但是我们没有什么可以指定范围的地方。


要在rangeMinrangeMax之间生成一个随机值:

Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();

这个问题在Java 7发布之前就已经问过了,但现在有另一种使用Java 7(及以上)API的可能方式:

double random = ThreadLocalRandom.current().nextDouble(min, max);

nextDouble将返回最小值(包含)和最大值(独占)之间的伪随机双值。 边界不一定是int ,可以是double


用这个:

double start = 400;
double end = 402;
double random = new Random().nextDouble();
double result = start + (random * (end - start));
System.out.println(result);

编辑:

new Random().nextDouble() :随机产生一个介于0和1之间的数字。

start :开始号码,将号码移到“向右”

end - start :间隔。 随机数给出了这个数字的0%到100%,因为随机给了你一个从0到1的数字。


编辑2: Tks @daniel和@aaa bbb。 我的第一个回答是错误的。

链接地址: http://www.djcxy.com/p/17729.html

上一篇: Generate a random double in a range

下一篇: How can I permanently enable line numbers in IntelliJ?