今天有同事问我这样一个事情:
Random r = new Random();
r.setSeed(40);
System.out.println(r.nextInt(100));
Random q = new Random();
q.setSeed(40);
System.out.println(q.nextInt(100));
为什么两次输出的结果是一样的?
其实这个问题在JAVADOC上已经说明的很清楚了:
类 Random 写道
如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
大多数情况,使用这个类只是想获取一个随机数,这样的话,只要把设定种子的语句去掉,就能每次获取到随机数了。其实就像JAVADOC所说,很多应用程序会发现 Math
类中的 random
方法更易于使用。