random関数は,
rand関数と基本的に同じ呼び出しシーケンスと初期化プロパティを持つが,よりランダムなシーケンスを生成する乱数ジェネレータです。
randが生成する下位 12 ビットはパターンとして循環します。しかし,
randomが生成するビットはすべてが利用可能です。たとえば,
random() &1 はランダムな 2 進値を生成します。
random関数は,デフォルトでは整数 31 個のサイズの状態配列を使用する,非線形の,加算的フィードバックの乱数ジェネレータを使用して, 0〜 231-1 の範囲の連続した擬似乱数を返します。この乱数ジェネレータの周期は,約 16*( 231-1 ) です。乱数ジェネレータの周期は,状態配列のサイズによって決定されます。状態配列のサイズを増やすと,周期も増えます。
256 バイトの状態情報では,乱数ジェネレータの周期は 269 よりも大きくなり,ほとんどの用途に十分です。
rand関数と同様に,
random関数はデフォルトでは,シードとして 1 の値を使って
srandom関数を呼び出すことで複製できる数のシーケンスを生成します。
srandom関数は,
srand関数とは異なり,使用される状態情報の量が 1 ワードよりも多いため,古いシードを返しません。
rand,
srand,
srandom,
setstate, および
initstateも参照してください。