java学习-随机数生成

java中的随机数,java.lang.Math.random()和java.util.Random.nextDouble()

Math.random()方法是生成0.0---1.0区域内的随机数,每次返回的数值都是不一样,应该可以算作随机数,

而Random类,如果初始化时候new Random(12).nextDouble()是这样设置的int seed  这个值一直是12,那么,不论循环多少次,多长时间间隔,

  生成的随机数都是一样的。这个是因为,这个生成的随机数是通过一12这个seed为参数,调用特定算法生成了,所以不论怎样,生成的数值都是一样,这个算伪随机数

但是Math.random()方法内部其实也是调用的Random类的nextDouble()方法。只不过其调用的是无参的构造方法

    /**
     * Creates a new random number generator. This constructor sets
     * the seed of the random number generator to a value very likely
     * to be distinct from any other invocation of this constructor.
     */
    public Random() {
        this(seedUniquifier() ^ System.nanoTime());
    }

这个方法会调用时间戳进行seed参数的初始化,所以Math.random()方法每次生成的数据都是不一样的

猜你喜欢

转载自www.cnblogs.com/gne-hwz/p/9541667.html