Random 两种构造方法:
Random():创建一个新的随机数生成器。
Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
我们可以在构造Random对象的时候指定种子(这里指定种子有何作用,请接着往下看),如:Random r1 = new Random(20);
或者默认当前系统时间的毫秒数作为种子数:Random r1 = new Random();
就是用20预置伪随机序列发生器的初始状态,写个别的数也行……
如果想要生成某范围内的随机数字,应该是
int num=rand.nextInt(20);
这样会生成0-19之间的随机整数!
java 的随机实际上是一个伪随机,是按照一定的规则来生产的,我们可以结合一个例子来看
public static void main(String[] args){
Random a = new Random(3);
Random b = new Random(3);
Random c = new Random(7);
System.out.println("a:"+a.nextInt(100)+" b:"+b.nextInt(100)+" c:"+c.nextInt(100));
System.out.println("a:"+a.nextInt(100)+" b:"+b.nextInt(100)+" c:"+c.nextInt(100));
System.out.println("a:"+a.nextInt(100)+" b:"+b.nextInt(100)+" c:"+c.nextInt(100));
}
运行上面的程序你会发现,每一次a和b的值都是一样的,而c的值和a、b不同
这是因为a、b的种子值(seed)相同,所以他们的规则也是相同的。
而c的种子值不一样,所以得到的数也不一样
Random()
创建一个新的随机数生成器。此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法的所有其他调用所用的值完全不同。
Random(long seed)
使用单个 long 种子创建一个新的随机数生成器。该种子是伪随机数生成器的内部状态的初始值,该生成器可通过方法 next(int) 维护。
调用 new Random(seed) 等效于:
Random rnd = new Random();
rnd.setSeed(seed);
如果有种子数,则产生的随机数在每次执行的时候都是同一个数值。
如果没有种子数,则每次执行生成随机数的结果不同。
括号里的数就表示 生成多少以内的随机数
20 就表示生成0-19中的任意一个