1
私は比較的新しいFortranで、RANDOM_NUMBER
とRANDOM_SEED
のサブルーチンを理解しようとしています。次のコードは、プログラムの先頭にあるDO LOOP
の外側にジェネレータをシードするにもかかわらず、同じ乱数シーケンスを連続的に生成します。私は、コード乱数ジェネレータは、シードされていても同じシーケンスを生成します
Random number 1 = 0
Random number 2 = 1
Random number 3 = 2
Random number 4 = 2
Random number 5 = 1
Random number 6 = 2
Random number 7 = 0
Random number 8 = 0
Random number 9 = 3
Random number 10 = 3
私はこの正確な配列私は、コードを実行するたびに取得を実行したときにここで
1 PROGRAM TEST
2
3 IMPLICIT NONE
4
5 INTEGER :: I, OUTPUT
6 REAL :: R
7
8 CALL RANDOM_SEED()
9
10 DO I=1, 10
11 CALL RANDOM_NUMBER(R)
12 OUTPUT = I*R
13 PRINT *,'Random number ', I, ' = ', OUTPUT
14 END DO
15
16 END PROGRAM TEST
が出力されます。私はコンパイル時に再生成されるかどうかを確認するために再コンパイルを試みました。
は、迅速なGoogle検索のリターンを行う:RANDOM_SEEDは、引数なしで呼び出された場合は、デフォルトの状態に初期化されます。パラメータに何も入力していない場合は、毎回同じ乱数列が返されるようです。 – DragonYen
私はそのポストも見たことがありますが、引数を指定しないでrandom_seedを呼び出すと、デフォルトでシードとして使用する日付/時刻がフェッチされることになります(例えば、インテルフォーラムなど)。これについての私の解釈は、引数なしでRANDOM_SEEDを呼び出すと、コンピュータは自動的にシードされます。 –
@ castled-rook、それはコンピュータに依存すると思います – Jodrell