総合手引 | セクション 3 | English | オプション |
#include <stdlib.h>
以下で説明する 6つのジェネレータルーチンでは、最初の演算ステップでアル ゴリズムが 1回実行されます。
drand48() と erand48() は、ダブルタイプの値を戻します。r(n+1) の 48ビット全体は戻り値の仮数に ロードされ、指数は作成された値が区間[0.0, 1.0)に存在するように設定され ます。
lrand48() と nrand48() は、範囲[0, 2**31-1]でロングタイプの値を戻します。r(n+1) の上位(31)ビッ トは戻り値の下位ビットにロードされ、最上位(符号)ビットは 0に設定されます。
mrand48() と jrand48() は、範囲[-2**31, 2**31-1]でロングタイプの値を戻します。r(n+1)の上位 (32)ビットは、戻り値にロードされます。
drand48(), lrand48(), mrand48(), は、内部バッファを使用して r(n) を保存します。この関数では、r(0) の初 期値が 0x1234abcd330e = 20017429951246 になっています。
erand48(), nrand48(), jrand48() は、ユーザが指定したバッファを使用して r(n) を保存します。このバッファ は 3つのショートから構成されており、0番目のメンバには最下位ビットが入 ります。
すべての関数は、同じ被乗数と加数を共有します。
srand48() は、種の値の 32ビットを r(n) の上位 32ビットにコピーし、r(n)の下位 16 ビットを 0x330e に設定して、 drand48(), lrand48(), mrand48() の内部バッファ r(n) を初期化します。アルゴリズムの定被乗数と加数は、上 記のデフォルト値にリセットされます。
seed48() も drand48(), lrand48(), mrand48() の内部バッファ r(n) を初期化しますが、種の 48ビット全体が 3つのショー トの配列に指定され、0番目のメンバは最下位ビットを指定します。アルゴリ ズムの定被乗数と加数は、上記のデフォルト値にリセットされます。 seed48() は、古い種を含む、3つのショートの配列を指すポインタを戻します。この配 列は静的に割り振られるため、 seed48() を呼び出すたびに内容は失われます。
lcong48() では、 drand48(), erand48(), lrand48(), nrand48(), mrand48(), jrand48() で使用される被乗数と加数、および drand48(), lrand48(), mrand48() で使用される種を完全に制御できます。パラメータとしては、7つのショート の配列が渡されます。最初の 3つのショートは種の初期化に、次の 3つは被乗 数の初期化に、最後のショートは加数の初期化に使用されます。このため、 0xffff より大きい値を加数として使用することはできません。
乱数ジェネレータの種を作る 3つすべての手法は、6つのジェネレータの呼び 出し用に被乗数と加数を常に設定することに注意してください。
より強力な乱数ジェネレータが必要な場合は、 random(3) を使用してください。
RAND48 (3) | October 8, 1993 |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | … one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs. | ” |
— Robert Firth |