Java随机数生成的方式

655 阅读1分钟

Random类

使用一个random类的对象来产生随机数。

Random类的两个构造函数

  1. 不带参数的,默认调用System.nanoTime()作为种子产生随机数
  2. 带参数的

System.nanoTime()获取某个固定但随机的时间点单位为纳秒开始的 1纳秒 = 10**-9秒

伪随机

  1. 看似随机,但实际上是固定的周期序列
  2. 只要随机数是由固定的算法生成,就是伪随机
  3. 通过真是随机时间获取的随机数才是真随机

总结

  1. 使用相同种子的对象之间调用同一种方法,得到的随机数也相同
  2. 使用相同种子生成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类的方法