random - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
random, srandom, initstate, setstate - 乱数を生成する関数
書式
#include <stdlib.h>
long int random(void);
void srandom(unsigned int seed);
char *initstate(unsigned int seed, char *state, size_t n);
char *setstate(char *state);
説明
random () 関数は、非線形加法フィードバックを用いた乱数生成関数である。 この関数は、0 から RAND_MAX までの疑似乱数を返す。 そのために 31 個のロング整数からなるデフォルトの表を使用する。 この乱数を生成する関数の周期はとても長く、およそ 16*((2**31)-1) である。
srandom () 関数は、 random () で返される疑似乱数整数系列の種を設定する。 そのためには新しい種を引数にして srandom () を呼べばよい。 random () で生成される系列は、 引数に同じ種の値を用いて srandom () を呼ぶことで再現可能である。 種の値が与えられない場合には random () 関数は、自動的に 1 を種に設定する。
initstate () 関数は、random () で使用される状態配列 state を初期化する。 initstate () では、状態配列の大きさ n は 使用する関数の乱数生成の性能の程度を決定するために使用される \(em 状態配列が大きい程、乱数の性能はよくなる。 seed は初期化のための種である。 これは乱数系列の開始位置を決定するものであり、 この値を指定することで同一の開始位置から乱数の生成を 再開することができる。
setstate () 関数は、random () で使用される状態配列を変更する。 状態配列 state は、initstate () または setstate () が 次に呼び出されるまで、乱数の生成に使用される。 state は initstate () を用いて最初に初期化されているか、 以前に呼び出した setstate () の結果でなければならない。
返り値
random () 関数は0とRAND_MAXの間の値を返す。 srandom () 関数は値を返さない。 initstate () 関数と setstate () 関数は 直前の状態配列へのポインタまたは NULL を返す。
エラー
- EINVAL
- initstate () で8バイトよりも小さい状態配列を指定した。
注意
状態配列 n の大きさの現在の「最適」値は 8、32、64、128、256 バイトである。 その他の量を指定した場合には、指定した量を越えない上述の値に 最も近い値になる。 8 バイト未満の量を指定した場合にはエラーの原因となる。
準拠
4.3BSD, POSIX.1-2001.
関連項目
rand
(3),
srand
(3)