标签:
package cn.wangbingan.vip; import java.util.Random; /** * Math.random()和Random.nextInt()区别 * * @author AK * */ public class RandomTest { public static void main(String[] args) { // TODO Auto-generated method stub // 随机数对象 Random random = new Random(); // 开始时间 long startTime1 = System.nanoTime(); // 生成随机数 long a = random.nextInt(10000); // 结束时间 long endTime1 = System.nanoTime(); // 耗时时间 long time1 = endTime1 - startTime1; System.out.println("生成随机数:" + a + "=>Random耗时:" + time1); // 开始时间 long startTime2 = System.nanoTime(); // 生成随机数 int b = (int) (Math.random() * 10000); // 结束时间 long endTime2 = System.nanoTime(); // 耗时时间 long time2 = endTime2 - startTime2; System.out.println("生成随机数:" + b + "=>Math耗时:" + time2); } }
输出结果:
生成随机数:9441=>Random耗时:11000
生成随机数:7109=>Math耗时:43000
前者生成的随机数效率高于后者,时间上前者大约是后者50%到80%的时间,可能还要高.
造成这个原因如下:
Math.random()是Random.nextDouble()的一个内部方法.(所以肯定爸爸的效率高于儿子了)
Random.nextDouble()使用Random.next()两次,均匀的分布范围为0到1 - (2 ^ -53).
Random.nextInt(n)的使用Random.next()不多于两次, 返回值范围为0到n - 1的分布
Math.random()和Random.nextInt()区别
标签:
原文地址:http://my.oschina.net/Tsher2015/blog/506708