#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);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
random(), srandom(), initstate(), setstate(): _SVID_SOURCE || |_BSD_SOURCE || _XOPEN_SOURCE >= 500
srandom() 関数は、 random() で返される疑似乱数整数系列の種を設定する。 そのためには新しい種を引数にして srandom() を呼べばよい。 random() で生成される系列は、 引数に同じ種の値を用いて srandom() を呼ぶことで再現可能である。 種の値が与えられない場合には random() 関数は、自動的に 1 を種に設定する。
initstate() 関数は、 random() で使用される状態配列 state を初期化する。 initstate() では、状態配列の大きさ n は 使用する関数の乱数生成の性能の程度を決定するために使用される --- 状態配列が大きい程、乱数の性能はよくなる。 seed は初期化のための種である。 これは乱数系列の開始位置を決定するものであり、 この値を指定することで同一の開始位置から乱数の生成を 再開することができる。
setstate() 関数は、 random() で使用される状態配列を変更する。 状態配列 state は、 initstate() または setstate() が 次に呼び出されるまで、乱数の生成に使用される。 state は initstate() を用いて最初に初期化されているか、 以前に呼び出した setstate() の結果でなければならない。