1. Random产生
这里示例,我们产生20个1000以内的整数
import java.util.Random;
public class RandomTest {
public static void random1(){
Random r = new Random();
for(int i=0;i<20;i++){
int num = r.nextInt(1000);
System.out.print(num + " ");
}
}
public static void main(String[] args) {
random1();
}
}
//输出
383 205 604 568 525 418 759 558 804 728 205 723 866 567 521 592 399 434 221 68
注:
1)这里的nextInt产生的数,包括[0,num),也就是这里是0-999
2)Random初始化的时候,默认是没有参数的,也就是以当前时间为种子,
而当然我们也可以指定一个long的参数作为种子,
3)如果种子相同,产生的随机数序列也是相同的
2. 使用Math.random产生
产生一个指定范围的随机数
public static void random2(){
int min = 1;
int max = 100;
for(int i=0;i<20;i++){
double d = Math.random();
int v = (int)(d * (max-min) + min);
System.out.print(v + " ");
}
System.out.println();
}
//输出
74 88 65 13 34 72 13 14 13 75 62 92 9 73 45 47 16 64 74 52
注:
1)Math.random会产生一个[0.0-1.0)之间的随机数
2)(int)(d(max-min) + min) 产生[min,max)之间的数,d(max-min)产生[0,(max-min)),
d*(max-min) +min产生[min,max)之间的随机数
3. ThreadLocalRandom产生
public static void random3(){
for(int i=0;i<20;i++){
int num = ThreadLocalRandom.current().nextInt(1000);
System.out.print(num + " ");
}
System.out.println();
}
//输出
585 971 182 919 416 505 127 223 662 944 533 340 990 763 738 863 566 970 645 996
使用方法类似于第一种
4. 使用SecureRandom产生
使用加密的强随机数生成器RNG,使产生的种子是真正的随机数,保证输出的不确定性
public static void random4() throws NoSuchAlgorithmException {
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
for(int i=0;i<20;i++){
int num = random.nextInt(1000);
System.out.print(num + " ");
}
}
//输出
788 72 159 367 254 9 157 681 367 8 636 34 695 202 530 960 832 489 439 215