Java中,Random()和Random(整数),这两种不同的随机数生成方式,有什么不一样呢?下面看一段代码来认识一下:
import java.util.Random;
public class randomDemo {
public static void main(String[] args) {
Random random = new Random(50);
for (int j = 0; j < 8; j++) {
System.out.print(" " + random.nextInt(100) + ", ");
}
System.out.println();
for (int j = 0; j < 8; j++) {
System.out.print(" " + random.nextInt(100) + ", ");
}
System.out.println();
System.out.println("-----------------------------------");
Random random2 = new Random(50);
for (int j = 0; j < 8; j++) {
System.out.print(" " + random2.nextInt(100) + ", ");
}
System.out.println();
for (int j = 0; j < 8; j++) {
System.out.print(" " + random2.nextInt(100) + ", ");
}
System.out.println();
System.out.println("-----------------------------------");
Random random3 = new Random();
for (int j = 0; j < 8; j++) {
System.out.print(" " + random3.nextInt(100) + ", ");
}
System.out.println();
Random random4 = new Random();
for (int j = 0; j < 8; j++) {
System.out.print(" " + random4.nextInt(100) + ", ");
}
System.out.println();
}
}
结果如下:
17, 88, 93, 12, 51, 61, 36, 58,
16, 8, 0, 12, 0, 55, 28, 92,
-----------------------------------
17, 88, 93, 12, 51, 61, 36, 58,
16, 8, 0, 12, 0, 55, 28, 92,
-----------------------------------
30, 82, 18, 79, 62, 15, 53, 50,
67, 51, 65, 30, 72, 69, 24, 86,
你会发现用Random(50)生成的随机数,每一次生成是不一样的,但是重新创建的对象,再去生成一遍,就和前一个对象生成的随机数一样了。
这也就是seed的作用,默认不加的情况下,它默认的值是当前的时间,时间是在不停变化的,所以不管创建多少对象,生成多少遍随机数,都不会相同(概率小),但是seed指定一样以后,那么生成的随机数就会一样了。
总结:
带种子的随机数生成器,每次生成的随机数可能不同;但每一遍生成的随机数是相同的;
不带种子的随机数生成器每次生成的随机数可能不同;但每一遍生成的随机数也可能不同;