1.java.lang.Math提供的static random()函数:
作用:生成一个0到1之间的double值,左闭右开
@return a pseudorandom {@code double} greater than or equal
to {@code 0.0} and less than {@code 1.0}.
原理:Math.random()的实现还是通过util包中的Random实现的
private static final class RandomNumberGeneratorHolder {
static final Random randomNumberGenerator = new Random();
}
public static double random() {
return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}
2.java.util.Random
Random类有两个构造函数
①不带参
public Random(){
this(seedUniquifier() ^ System.nanoTime());
}
②带参(参数也叫种子,如果带种子,在第一次随机数确定后后面再执行任意次还是返回第一次返回的随机数)
public Random(long seed) {
if (getClass() == Random.class)
this.seed = new AtomicLong(initialScramble(seed));
else {
// subclass might have overriden setSeed
this.seed = new AtomicLong();
setSeed(seed);
}
}
说明:生成随机数的方法有nextInt()、nextInt(int)、next(Long)、next(Double)等
nextInt()生成0--1之间的整数(左闭右开)
nextInt(int bound)生成0--bound之间的整数(左闭右开)