生成一个范围内的随机双

我有两个双打,如下所示

double min = 100; double max = 101; 

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

 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 @丹尼尔和@aaa bbb。 我的第一个答案是错的。