今天用了find bugs后查出来了个问题
Google了下
发现
Random.nextint() 和Math.random()的区别
(经下面朋友提醒,再去Google了下 终于知道两者的区别了~,E文不好真知道大体意思)
http://stackoverflow.com/questions/738629/math-random-versus-random-nextintint
2个Exp:
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()的基础用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
1.java.util.concurrent.ThreadLocalRandom.current().nextInt(10) 这个新的API综合了其他两种方法的优点:单一实例/静态访问,就像Math.random()一样灵活。ThreadLocalRandom也比其他任何处理高并发的方法要更快。 ...
生成指定范围的数字2.Random.nextInt()与Math.random()的区别 一、Random类的使用 Random类的功能,生成一个随机数 1.Random类生成随机数(int)的基本语法: (1)生成int取值范围的任意一个数 Random r = new Random...
int num1 = (int)(Math.random() * 10); int num2 = (int)(Math.random() * 10); int sum = num1 + num2; System.out.print(num1 + " + " + num2 + " = "); Scanner input = new Scanner(System.in); int ...
java.util.Random rnd=new java.util.Random(); int temp,x1,x2,y1,y2; for(int i=0;i;i++){ x1=rnd.nextInt(4); x2=rnd.nextInt(4); y1=rnd.nextInt(4); y2=rnd.nextInt(4); temp=map[x1][y1]...
System.out.println("已进入游戏 , 按1继续 退出请按 2 "); int t = scanner.nextInt();... int number = (int) (Math.random() * (max + 1 - min) + min); System.out .println("请选择 开始游戏
Math.random 方法,创建一个double类型的随机数 ThreadLocalRandom class 1) java.util.Random 要使用这个方法,首先要生成一个实例。来调用它的nextInt(),nextDouble(), nextLong() 等等 我们可以使用这个类来生成...
石头剪子布Scanner in=new Scanner(System.in); System.out.println... int computer=(int)(Math.random()*3)+1; String Marks="拳头";//这是做一个标记; String Marks2="拳头"; switch(person){ case 1:
ans=(Math.abs(random.nextInt())%3)+1; String anw; if(ans==1){ anw="剪刀"; }else if(ans==2){ anw="石头"; }else { anw="布"; } System.out.println("电脑出拳:"+anw); } }
生成8位唯一的随机卡号(int)(Math.random()* 90000000)+ 10000000 或 Random ran = new Random() int id = ran.nextInt(110000000)+10000000; 开卡赠送积分 存到list集合 2、积分累计: 会员登陆...
概况: 本文概述2种jdk的随机数实现方式,旨在了解其运行机理。并得出运行效率比较。但这2种随机数生成还是会存在一定安全风险(伪随机数有可能会被猜出随机序列),... 2、java.util.Random的nextInt(n)方法 —
网络编码器 输入 结果 3 [2,3,1] 5 [4,2,1,3,5] ...import java.util.Scanner fun main ( args : Array ) { ... mList[ 0 ] = ( 1 + Math .random() * size).toInt() while (i < size) { value = ( 1 + Math
import java.util.Scanner; class Bissextile{ public static void main(String[] arge){ System.out.print("请输入年份"); int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in...
import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Scanner; import serverSide.Goods; import socketFunction.ClientSocket; ...
java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader( process.getInputStream())); String freeSpace = "", line; while ((line = in.readLine()) != null) { if (line.length...
算法是最快的随机数生成器中已知的,它需要非常小的代码和状态。 速度 使用AOT编译的二进制文件生成1亿个随机数。 时间(越低越好) nextInt 下一个双人间 nextBool 随机(dart:math) 2323 3107 2264 ...
float y = random.nextInt(getHeight()-targetBmp.getHeight()); float speed = Tools.sharedTools(GameView.this.context).getSetting(GameView.this.level).targetSpeed; targets.add(new ...
import java.util.Random; import java.util.Vector; import javax.microedition.media.*; public class SwordCanvas extends Canvas implements PopupListener { static int life,energy,skillpoint,x,y,maxlife,...