是这样的,我运行:importjava.util.Random;publicclasstestRandom3{publicstaticvoidmain(Stringargs[]){//带随机数种子//Randomobject=newRandom(10);Randomobject=newRandom();obj...
是这样的,我运行:
import java.util.Random;
public class testRandom3 {
public static void main(String args[]){
//带随机数种子
//Random object = new Random(10);
Random object = new Random();
object.setSeed(10);
System.out.println(object.nextInt());
System.out.println(object.nextInt(10));
System.out.println(object.nextBoolean());
System.out.println(object.nextDouble());
System.out.println(object.nextFloat());
System.out.println(object.nextLong());
byte[] bytes = new byte[]{0,1};
object.nextBytes(bytes);
System.out.println(bytes[0]);
System.out.println(bytes[1]);
}
}
以上这段代码,发现运行的结果是:
-1157793070
0
false
0.4129126974821382
0.67215943
4503168388465453601
-53
119
但将上面的某些语句注释掉,即如下:
import java.util.Random;
public class testRandom3 {
public static void main(String args[]){
//带随机数种子
//Random object = new Random(10);
Random object = new Random();
object.setSeed(10);
// System.out.println(object.nextInt());
// System.out.println(object.nextInt(10));
System.out.println(object.nextBoolean());
System.out.println(object.nextDouble());
System.out.println(object.nextFloat());
System.out.println(object.nextLong());
byte[] bytes = new byte[]{0,1};
object.nextBytes(bytes);
System.out.println(bytes[0]);
System.out.println(bytes[1]);
}
}
运行的结果又变成了如下:
true
0.4456342944175421
0.41291267
1092083446069765248
-54
119
和注释之前的结果不一样,不是说带种子的随机数生成器每次生成的结果是一样的吗?这是怎么回事呢?
多谢各位的回答,感觉hoponelee和futaohuan说的都很好,麻烦futaohuan说的更详细一点,为什么“方法调用序列不同”了,只是加了注释,对后面的语句有影响吗?
展开