Java: Random.nextInt() 和Math.random()的区别
2012-12-14 15:25
459 查看
2个Exp:
Java代码
前者生成的随机数效率高于后者,时间上前者大约是后者50%到80%的时间.
造成这个原因如下:
Math.random()是Random.nextDouble()的一个内部方法.
Random.nextDouble()使用Random.next()两次,均匀的分布范围为0到1 - (2 ^ -53).
Random.nextInt(n)的使用Random.next()不多于两次, 返回值范围为0到n - 1的分布
Java代码
Random rand = new Random(); long startTime = System.nanoTime() ; int i1 = rand.nextInt(1000000000); System.out.println(i1); long endTime = System.nanoTime(); System.out.println("Random.nextInt(): " + (endTime - startTime)); long startTime2 = System.nanoTime(); int i2 = (int) (java.lang.Math.random() * 1000000000); System.out.println(i2); long endTime2 = System.nanoTime(); System.out.println("Math.random():" + (endTime2 - startTime2));
前者生成的随机数效率高于后者,时间上前者大约是后者50%到80%的时间.
造成这个原因如下:
Math.random()是Random.nextDouble()的一个内部方法.
Random.nextDouble()使用Random.next()两次,均匀的分布范围为0到1 - (2 ^ -53).
Random.nextInt(n)的使用Random.next()不多于两次, 返回值范围为0到n - 1的分布
相关文章推荐
- Java: Random.nextInt() 和Math.random()的区别
- 我也来谈谈Java: Random.nextInt() 和Math.random()的区别
- Random.nextint() 和Math.random()的区别
- Random.nextint() 和Math.random()的区别
- Random.nextInt()、Random.nextInt() 和 math.random()区别
- java Random.nextInt()与Math.random()的比较
- random.nextInt()与Math.random()区别
- java hasNext()与next()的区别,hasNextInt()与nextInt()的区别,hasNextDouble()与nextDouble()的区别
- java中Random与Math.random用法 生成int随机数
- 浅谈java中Math.random()与java.util.random()的区别
- java Random.nextInt()方法
- java Random.nextInt()方法
- java中Math.random()与java.util.random()的区别
- 生成随机数方法:java.util.Random.nextInt(int n)方法实例
- java 使用Random(0,1)实现Random(a,b) 以及 random.nextInt()不随机性
- random.nextInt()与Math.random()基础用法
- java基础_函数Math.random()和Random的使用及区别
- int java.util.Random.nextInt(int n)
- java中的int i=(int)(Math.random()*100)+1;怎样理解?
- java random.nextInt()的使用