Random类
使用一个random类的对象来产生随机数。
Random类的两个构造函数
- 不带参数的,默认调用System.nanoTime()作为种子产生随机数
- 带参数的
System.nanoTime()获取某个固定但随机的时间点单位为纳秒开始的 1纳秒 = 10**-9秒
伪随机
- 看似随机,但实际上是固定的周期序列
- 只要随机数是由固定的算法生成,就是伪随机
- 通过真是随机时间获取的随机数才是真随机
总结
- 使用相同种子的对象之间调用同一种方法,得到的随机数也相同
- 使用相同种子生成n个数字,这n个数字从种子确定的时候就已经被确定好了
Math.random()方法
返回一个介于0.0-1.0之间的double值
源码
private static final class RandomNumberGeneratorHolder {
static final Random randomNumberGenerator = new Random();
}
public static double random() {
return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}
可以看到该方法最终还是使用了Random类的方法