目的
RANDOM_NUMBER によって使用された疑似乱数発生ルーチンを再始動または照会します。
クラス
サブルーチン
引き数の型と属性
引き数がちょうど 1 つだけか、またはまったく存在しないかの どちらかでなければなりません。
+----------------------------------IBM 拡張----------------------------------+
+------------------------------End of IBM 拡張-------------------------------+
+----------------------------------IBM 拡張----------------------------------+
Random_seed を使用すると、2 つの乱数発生ルーチンを切り替えることができます。 乱数発生ルーチン 1 がデフォルトです。 各乱数発生ルーチンは、それぞれ専用のシードを維持し、 通常は、最後に生成した数の次の数からサイクルを再開します。 有効なシードは、乱数発生ルーチン 1 の場合は 1.0 から 2147483647.0 (2.0**31-1) の間の整数、 乱数発生ルーチン 2 の場合は 1.0 から 281474976710656.0 (2.0**48) の間の整数になります。
乱数発生ルーチン 1 は、次の式により、乗算合同式法を使用します。
S(I+1) = ( 16807.0 * S(I) ) mod (2.0**31-1)
かつ
X(I+1) = S(I+1) / (2.0**31-1)
乱数発生ルーチン 1 は、2**31-2 の乱数後に循環します。
乱数発生ルーチン 2 も、次の式により、乗算合同式法を使用します。
S(I+1) = ( 44,485,709,377,909.0 * S(I) ) mod (2.0**48)
かつ
X(I+1) = S(I+1) / (2.0**48)
乱数発生ルーチン 2 は、(2**46) 個の乱数発生後に循環します。 乱数発生ルーチン 1 がデフォルトになっていますが (以前のバージョンとの互換性 を保つため)、乱数発生ルーチン 1 よりも乱数発生ルーチン 2 の方が実行が速く、 循環するまでの間隔も長くなっているため、新しいプログラムでは乱数発生ルーチン 2 を 使用することをお勧めします。
引き数が存在しない場合は、現行の乱数発生ルーチンのシードは デフォルト値 1d0 に設定されます。
+------------------------------End of IBM 拡張-------------------------------+
例
CALL RANDOM_SEED ! Current generator sets its seed to 1d0 CALL RANDOM_SEED (SIZE = K) ! Sets K = 64 / BIT_SIZE( 0 ) CALL RANDOM_SEED (PUT = SEED (1 : K)) ! Transfer seed to current generator CALL RANDOM_SEED (GET = OLD (1 : K)) ! Transfer seed from current generator