|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > d > drand48 - ライブラリコールの説明 drand48 - ライブラリコールの説明 - Linux コマンド集 一覧表名前drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - 一様分布する疑似乱数を生成する関数 書式
#include <stdlib.h> 説明これらの関数は線形合同アルゴリズムと 48ビット整数演算を用いて 疑似乱数を生成する。 関数 drand48 () と erand48 () は、区間 [0.0, 1.0) で 一様分布する非負の倍精度浮動小数点実数値を返す。 関数 lrand48 () と nrand48 () は 0 と 2^31 の間で一様分布する 非負のロング整数を返す。 関数 mrand48 () と jrand48 () は -2^31 と 2^31 の間で一様分布する符号付きロング整数を返す。 関数 srand48 (), seed48 (), lcong48 () は初期化関数 である。 関数 drand48 (), lrand48 (), mrand48 () を 使用する前に、これらの初期化関数のいずれかを呼ぶべきである。 関数 erand48 (), nrand48 (), jrand48 () は初めに 初期化関数を呼ぶことを必要としない。 ここで説明しているすべての関数は 48ビットの整数の
シーケンス (Xi
) を生成することで
機能している。生成方法は以下の線形合同の式による。
ここで n >= 0 である。 パラメータが m = 2^48 であるため、48ビット整数演算が行われている。 lcong48 () が呼ばれていない場合、a と c は以下の式で与えられる。
関数 drand48 (), erand48 (), lrand48 (), nrand48 (), mrand48 (), jrand48 () で返される値は次のようにして計算される。 はじめに、次の48ビットの Xi が計算される。 そして、返すべきデータの型に依存した適切な ビット数が Xi の上位ビットからコピーされる。 最後に、この値を返り値に変換する。 関数 drand48 (), lrand48 (), mrand48 () は 最後に生成された48ビットの Xi を内部バッファに格納する。 配列の形の引数 xsubi に個々の Xi の値を 格納できるような領域を確保することを、 関数 erand48 (), nrand48 (), jrand48 () は、 呼び出し側のプログラムに要求する。 これらの関数は、はじめてそれらの関数を呼ぶ前に Xi の初期値を配列に 代入することで初期化される。 初期化関数 srand48 () は、Xi の 上位32ビットを引数 seedval に設定する。 下位の16ビットは、適当に決められた値である0x330Eに設定される。 初期化関数 seed48 () は、Xi の値を、 配列の形をした引数である seed16v の中で指定された 48ビットの値に設定する。 Xi の前の値は内部バッファにコピーされ、このバッファへのポインタが seed48 () によって返される。 初期化関数 lcong48 () は使用者が Xi , a , c の 初期値を指定するための関数である。 配列の形をした引数の要素はそれぞれ、param[0-2] は Xi を、 param[3-5] は a を、param[6] は c を指定するもの である。 lcong48 () が呼ばれた後で、 srand48 () か seed48 () を呼ぶと、前述の a と c の 標準値が再び設定される。 準拠SVr4, POSIX.1-2001. 注意事項SVID3 ではこれらの関数は時代遅れと宣言されている。 SVID3 では rand (3) が代わりに使用されるべきだと記述されている。 関連事項
|
|