Random rand = new Random(20); 括号里的数对随机数的产生有什么影响

Random rand = new Random(20);括号里的数对随机数的产生有什么影响
2024-12-24 19:37:44
推荐回答(4个)
回答1:

Random 两种构造方法:
     Random():创建一个新的随机数生成器。
     Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
  我们可以在构造Random对象的时候指定种子(这里指定种子有何作用,请接着往下看),如:Random r1 = new Random(20);
  或者默认当前系统时间的毫秒数作为种子数:Random r1 = new Random();

 就是用20预置伪随机序列发生器的初始状态,写个别的数也行……

如果想要生成某范围内的随机数字,应该是
int num=rand.nextInt(20);
这样会生成0-19之间的随机整数!

回答2:

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的种子值不一样,所以得到的数也不一样

回答3:

Random()

创建一个新的随机数生成器。此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法的所有其他调用所用的值完全不同。
Random(long seed)

使用单个 long 种子创建一个新的随机数生成器。该种子是伪随机数生成器的内部状态的初始值,该生成器可通过方法 next(int) 维护。
调用 new Random(seed) 等效于:
Random rnd = new Random();
rnd.setSeed(seed);

如果有种子数,则产生的随机数在每次执行的时候都是同一个数值。
如果没有种子数,则每次执行生成随机数的结果不同。

回答4:

括号里的数就表示 生成多少以内的随机数
20 就表示生成0-19中的任意一个