JAVA随机数(Math类和Random类生成的随机数)

new Random()

1.以这种形式实例化对象时,Java编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间都不可能相同,所以产生的随机数也不同。如果运行速度太快,也会产生两次运行结果相同的随机数。

2.伪随机既有规则的随机,Random类中的随机算法就是伪随机。具体表现为:相同种子数的Random对象生成的随机数序列相同:

Random r1 = new Random(100);

Random r2 = new Random(100);

结果:产生的随机数相同。


3.产生 1~50的整数

n + (new Random()).nextInt(m-n+1)


例:

生成整数随机数

Random rand=new Random();

for(inti= 0;i< 50;i++) {

try{

Thread.sleep(500);

}catch(InterruptedException e) {

//TODOAuto-generated catch block

e.printStackTrace();

}

int num = rand.nextInt(3) +1;

System.out.println(num);

//返回大于等于m小于m+n(不包括m+n)之间的随机数

int num2= m + (int)(Math.random() * n);

System.out.println("======="+num2);

int num3=(int)(Math.random() * n);//返回大于等于0小于n之间的随机数

}


生成double的随机数

Random rand=new Random();

for(inti= 0;i< 50;i++) {

try{

Thread.sleep(800);

}catch(InterruptedExceptione) {

//TODOAuto-generated catch block

e.printStackTrace();

}

doublenum=rand.nextDouble()* 0.05 + 0.01;

System.out.println(num);

//返回大于等于m小于m+n(不包括m+n)之间的随机数

doublenum2= 0.01+ (double)(Math.random() * 0.05);

System.out.println("======="+num2);

intnum3=(int)(Math.random() * 0.05);//返回大于等于0小于n之间的随机数

System.out.println("==="+num3);

}

Math.random() 方法生成[0, 1)范围内的double类型随机数;Random类中的nextXxxx系列方法生成0-n的随机数;

Math.random() 线程安全,多线程环境能被调用;

如无特殊需求,则使用(int)(Math.random()*n)的方式生成随机数即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容