Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个随机语句之间的差异_Java_Random - Fatal编程技术网

Java 两个随机语句之间的差异

Java 两个随机语句之间的差异,java,random,Java,Random,我想知道为什么每次运行代码时,第一列中出现的数字都会改变。第二列中的数字将始终相同。(83517790965835388654) Random Random generator=new Random(); 随机其他生成器=新随机(123); 对于(int i=0;i

我想知道为什么每次运行代码时,第一列中出现的数字都会改变。第二列中的数字将始终相同。(83517790965835388654)

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);
 }