本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > r

random(3M)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

random(), srandom(), initstate(), setstate() ― 擬似乱数の生成

構文

#include <stdlib.h>

long random(void);

void srandom(unsigned seed);

char *initstate(unsigned seed, char *state, size_t size);

char *setstate(char *state);

説明

random() および srandom() 関数は、実質的に、 rand() および srand() 関数と同じ呼出し手順と初期化特性を持っていますが、生成シーケンスがよりランダムな乱数ジェネレータです。 rand() 関数によって生成された下位 12 ビットは周期的なパターンになっていますが、 random() 関数で生成されたすべてのビットは使用可能です。 例えば、 random() & 01 は、ランダムなバイナリ値を生成します。

random() 関数は、0 から 231-1 の範囲の連続した擬似乱数を返すために、デフォルトで 31 個の long 整数の状態配列サイズを使って、非線形加法フィードバック乱数ジェネレータを使用します。 この乱数ジェネレータの周期は、約 16 x (231-1) です。 状態配列のサイズが、乱数ジェネレータの周期を決定します。 状態配列サイズを増加すると、周期も増加します。

256 バイトの状態情報で、乱数ジェネレータの周期は、 269 より大きくなります。

rand() 関数と同じように、デフォルトで、 random() 関数は、種の値を 1 として srandom() 関数を呼び出したときに生成される一連の数を生成します。

srandom() 関数は、 seed の値を使用して、現在の状態配列を初期化します。

initstate() および setstate() 関数は、乱数ジェネレータの再起動と変更を行ないます。 initstate() 関数は、将来の使用に備えて、 state 引き数が指す状態配列を初期化します。 状態配列のサイズをバイト単位で指定する size 引き数は、乱数ジェネレータをどのくらい複雑にするかを決めるために、 initstate() 関数で使用されます。 状態配列が大きいほど、数がランダムになります。 状態情報のサイズは、8、32、64、128 および 256 バイトです。 これ以外のサイズは、最も近い値に切り捨てられ、8 バイトより小さい値はエラーになります。 seed 引き数は、乱数シーケンスの起点を指定し、同じ場所から再開可能にします。 initstate() 関数は、以前の状態情報配列へのポインタを返します。

一度 、状態が初期化されると、 setstate() 関数により状態配列間の切り替えができます。 initstate() 関数を呼び出すか、あるいは、 setstate() 関数を再び呼び出すまで、 state 引き数で定義された配列は、次の乱数生成のために使用されます。 setstate() 関数は、以前の状態配列へのポインタを返します。

初期化の後に、状態配列は、次の 2 通りの方法のうちの 1 つの方法で、異なる場所から再起動できます。

initstate() 関数は、好みの種、状態配列および配列サイズで、使用できます。 setstate() 関数は、好みの状態で使用し、その後で好みの種を指定して srandom() 関数を呼び出すことができます。 この 2 つの関数を使用する利点は、一度状態配列を初期化すれば、状態配列のサイズを保存しておかなくてもよいということです。

戻り値

random() 関数は、生成した擬似乱数を返します。

srandom() 関数は、値を返しません。

initstate() および setstate() 関数は、正常終了すると、以前の状態配列へのポインタを返します。 異常終了すると、null ポインタを返します。

エラー

initstate() 関数が 8 より小さい size で呼び出された場合、あるいは setstate() 関数が、状態情報が壊れていることを検出した場合、エラーメッセージが標準エラーに書き込まれます。

参照

drand(3C), rand(3C), random(7)

標準準拠

random()COSE API, XPG 4.2
srandom()COSE API, XPG 4.2
initstate()COSE API, XPG 4.2
setstate()COSE API, XPG 4.2

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.