ナビゲーション:前へ 上へ 次へ
2.13 乱数アルゴリズム
組み込みサブルーチンRANDOM_NUMBER
で提供される乱数ジェネレーターは、“MersenneTwister”です。
このジェネレーターはその状態を保持するための領域が大きく(630個の32ビット整数)非常に長い周期を持ちます。
(約 106000),
したがってRANDOM_SEED
ルーチンのGET
で返された値でのみPUT
を使用すること(つまり前回のシーケンスを繰り返すための使用)が推奨されます。
これはユーザーが直接独自に指定するシードが(630個もの値があるので)低エントロピーである可能性が高いためです。
しかしながらもしそれでもユーザ独自のシード(およびエントロピー)を提供する場合は、 シード配列の初期要素にその値を保存し、残りのすべての要素をゼロに設定する必要があります。 これにより末尾のゼロ要素は無視され、初期化には使用されません。 シードはランダムなビットストリームであるため、ビットの約半分が非ゼロであると想定されている事に注意して下さい。 (したがって、多くの小さな整数値を提供すると、メルセンヌツイスターシーケンスの低エントロピー部分に到達する可能性が高くなります。)
-random=7.2 オプション(デフォルト)を使用すると、各倍精度数値にはメルセンヌ・ツイスター列の32ビット要素が2つ使用され、各4倍精度数値には4つ使用されます。 -random=5.2 オプションを使用すると、倍精度数値には要素が1つのみ使用され、4倍精度数値には2つ使用されます。 これによりパフォーマンスが向上しますが、各値の下位ビットのエントロピーが低下します。