当前位置:   article > 正文

Java生成随机数Math.random()和new Random().nextInt(),new Random().nextDouble()效率问题_new random().nextint 优化

new random().nextint 优化

一般都使用Math.random()*100来生成随机整数,最近通过静态代码缺陷检查工具发现了一种新的方式--new Random().nextInt();

据网上资料说,使用new Random().nextInt(100)生成的随机数效率高于后者,时间上前者大约是后者50%到80%的时间.

查看Math.random()方法底层代码:

  1. public final class Math {
  2. //Math的random()方法实质上就是调用Random类对象的nextDouble()方法来实现的
  3. public static double random() {
  4. return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
  5. }
  6. private static final class RandomNumberGeneratorHolder {
  7. static final Random randomNumberGenerator = new Random();
  8. }
  9. }
由代码可见,Math的random()方法实质上就是调用Random类对象的nextDouble()方法来实现的,然后我们就说 new Random().nextInt()方法的效率高于Math.random(),但是,我们注意到,在final static Math类中, Random对象 是定义 在Math中 的一个静态内部类final static RandomNumberGeneratorHolder中的一个final static 类型的对象,因此它 在Math中是单例的 ,每次来调用Math.random()方法时用到的都是同一个Random对象,因此不会再次创建Random对象来占用内存  ,与之相反,如果我们每次产生随机数都new Random.nextInt()的话,新建对象也会占用部分的内存,这就是是否使用 内存换效率 的问题了,至于如何选择,见仁见智了,   个人浅见,欢迎各位指正...
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/84148
推荐阅读
相关标签
  

闽ICP备14008679号