我有两个双打,如下所示
double min = 100;
double max = 101;
Run Code Online (Sandbox Code Playgroud)
并且使用随机生成器,我需要在min和max的范围之间创建一个double值.
Random r = new Random();
r.nextDouble();
Run Code Online (Sandbox Code Playgroud)
但是这里没有任何东西我们可以指定范围.
mob*_*mob 217
在rangeMin
和之间生成随机值rangeMax
:
Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
Run Code Online (Sandbox Code Playgroud)
Tun*_*aki 120
这个问题是在Java 7发布之前提出的,但是现在,还有另一种使用Java 7(及以上)API的方法:
double random = ThreadLocalRandom.current().nextDouble(min, max);
Run Code Online (Sandbox Code Playgroud)
nextDouble
将返回最小(包含)和最大(不包括)之间的伪随机双精度值.边界不一定int
,也可以double
.
Top*_*era 37
用这个:
double start = 400;
double end = 402;
double random = new Random().nextDouble();
double result = start + (random * (end - start));
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)
编辑:
new Random().nextDouble()
:随机生成0到1之间的数字.
start
:开始编号,将数字"向右移"
end - start
:间隔.Random给出了这个数字的0%到100%,因为random给出了一个从0到1的数字.
编辑2: Tks @daniel和@aaa bbb.我的第一个答案是错的.
小智 5
import java.util.Random;
public class MyClass {
public static void main(String args[]) {
Double min = 0.0; // Set To Your Desired Min Value
Double max = 10.0; // Set To Your Desired Max Value
double x = (Math.random() * ((max - min) + 1)) + min; // This Will Create A Random Number Inbetween Your Min And Max.
double xrounded = Math.round(x * 100.0) / 100.0; // Creates Answer To The Nearest 100 th, You Can Modify This To Change How It Rounds.
System.out.println(xrounded); // This Will Now Print Out The Rounded, Random Number.
}
}
Run Code Online (Sandbox Code Playgroud)