Java 两个随机语句之间的差异
我想知道为什么每次运行代码时,第一列中出现的数字都会改变。第二列中的数字将始终相同。(83517790965835388654)Java 两个随机语句之间的差异,java,random,Java,Random,我想知道为什么每次运行代码时,第一列中出现的数字都会改变。第二列中的数字将始终相同。(83517790965835388654) Random Random generator=new Random(); 随机其他生成器=新随机(123); 对于(int i=0;i
Random Random generator=new Random();
随机其他生成器=新随机(123);
对于(int i=0;i<10;i++){
int number1=1+randomGenerator.nextInt(100);
整数2=1+otherGenerator.nextInt(100);
System.out.println(“随机数”+number1+“”+number2);
}
之所以发生这种情况,是因为用于第二列的Random
被一个常量123
作为种子,而用于第一列的具有一个种子,该种子在每次执行代码时都会发生变化
请注意,Random
产生的值不是真正的随机值;它们完全由种子决定 医生说:
使用单个长种子创建新的随机数生成器。种子是通过方法维护的伪随机数生成器内部状态的初始值
您已经确定第二个生成器的初始状态是固定的,并且正是从种子生成下一个随机数
另一方面,如果使用System.nanoTime()
生成种子,则每次生成器创建不同的随机数时都会看到
请参阅:第二列中的数字并不总是相同的…@OusmaneDiaw-我认为OP意味着每次运行此代码时,代码都会在第二列中生成相同的值序列,而不是第二列中填充单个值。@TedHopp我明白了。描述有点混乱,但我现在明白了。非常感谢您的回答
Random randomGenerator = new Random();
Random otherGenerator = new Random(123);
for(int i = 0; i < 10; i++) {
int number1 = 1 + randomGenerator.nextInt(100);
int number2 = 1 + otherGenerator.nextInt(100);
System.out.println("random numbers "+number1+" " +number2);
}