2017-02-28 9 views
-3

最初の列に表示される数字がコードが実行されるたびに変更される理由を知りたい。 2番目の列の数字は常に同じです。 (83 51 77 90 96 58 35 38 86 54)?2つのランダムステートメントの違い

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

2列目の数字は常に同じではありません.... –

+1

@OusmaneDiaw - 私はOPコードが2番目の列にこのコードをするたびに同じ値のシーケンスを生成することを意味だと思います2番目の列が単一の値で満たされているわけではありません。 –

+0

@TedHopp参照してください。説明はちょっと混乱しましたが、今はそれを手に入れます。 –

答えて

3

最初の列に対して1つのコードが実行されるたびに変化するシードを有している第二のカラムに使用Randomが、一定123が播種されているため、これが起こります。

Randomによって生成された値は本当にランダムではありません。それらは種によって完全に決定される。

+0

あなたの答えは本当にありがとう – Physics3067

0

DOCは言う:

は、long型のシードを使って乱数ジェネレータを作成します。種子は、あなたが第2発電機の初期状態が固定され、それが種子次のランダムである固定た方法

によって維持される擬似乱数生成器の内部状態の初期値であります数字が生成されます。

もう一方で、System.nanoTime()を使用してシードを生成すると、ジェネレータが異なる乱数を作成するたびに表示されます。

参照:https://docs.oracle.com/javase/7/docs/api/java/util/Random.html#Random(long)