Random中的nextInt和nextInt的区别是什么
1个回答
展开全部
Random.nextint() 和Math.random()的区别
Java代码 收藏代码
Random rand = new Random();
long startTime = System.nanoTime() ;
int i1 = rand.nextInt();
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() * );
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 rand = new Random();
long startTime = System.nanoTime() ;
int i1 = rand.nextInt();
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() * );
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的分布
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询