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)的方式生成随机数即可。
网友评论