反復して ran を呼び出すと、均一した分布で一連の乱数を生成します。lcrans(3m) を参照してください。
r = ran( i ) |
|||
i |
INTEGER*4 |
入力 |
変数または配列要素 |
r |
REAL |
出力 |
変数または配列要素 |
例: ran:
demo% cat ran1.f * ran1.f -- 乱数を生成する。 INTEGER*4 i, n real r(10) i = 760013 do n = 1, 10 r(n) = ran ( i ) end do write ( *, "( 5 f11.6 )" ) r end demo% f95 ran1.f demo% a.out 0.222058 0.299851 0.390777 0.607055 0.653188 0.060174 0.149466 0.444353 0.002982 0.976519 demo% |
次の点に注意してください。
0.0 は範囲に含まれますが、1.0 は含まれません。
乗算合同型の一般乱数発生アルゴリズムを使用しています。
一般に、i の値は呼び出し元のプログラム実行中に一度だけ設定されます。
i の初期値は大きい奇数の整数でなければなりません。
ran を呼び出すごとに、次の乱数が順に得られます。
プログラムを実行するたびに異なる乱数の列を得るには、実行ごとに引数を異なる初期値に設定しなければなりません。
ran は引数を使用して、下記のアルゴリズムに従い、次の乱数を計算するための値を格納します。
SEED = 6909 * SEED + 1 (MOD 2**32) |
SEED は 32 ビット数値を含み、上位 24 ビットは浮動小数点に変換され、その値が返されます。