Math.Random和java.util.Random区别


此处只做结论性记录,不做具体分析。

Random有两个构造器,有参和无参:

#有参构造器
Random random = new Random(seed);
通过有参构造器创建的random生成的随机数是通过传入的种子通过特定的算法计算出来的,所以多次运行返回的随机数总是一样的顺序
public class test {
public static void main(String[] args) {
Random random = new Random(50);
for (int i=0;i<5;++i){
System.out.println(random.nextInt(5));
}
}
}
如上代码多次运行返回结果总是:
2
3
3
2
1

#无参构造器

无参构造器内部也是调用的有参构造器,只是种子是通过系统当前时间计算出来的一个long型数据,所以多次运行结果都不一样
public Random() {
this(seedUniquifier() ^ System.nanoTime());
}

Math.Random返回[0,1)范围的double类型数据

内部也是调用的Java.util.Random无参构造器实现的

    public static double random() {
        return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
    }

    private static final class RandomNumberGeneratorHolder {
        static final Random randomNumberGenerator = new Random();
    }

区别也就一目了然了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM