XLPack 6.1
C/C++ API リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ _zignorm_r()

void _zignorm_r ( double  mu,
double  sigma,
double *  r,
int  ii,
double  yy,
int *  irev 
)

正規分布に従う乱数の生成 (Ziggurat法) (リバースコミュニケーション版)

目的
正規分布 N(μ, σ^2) に従う乱数を生成する.
与えられた一様乱数をZiggurat法により正規乱数に変換する.
引数
[in]mu正規分布 N(μ, σ^2) のパラメータμ(平均).
[in]sigma正規分布 N(μ, σ^2) のパラメータσ(標準偏差).
[out]r正規乱数.
[in]iiirev = 1: 再呼び出し時に整数型の一様乱数を与えること. 下位7ビットまたは8ビット(init_zignorm_r()で指定)のみが使用される.
[in]yyirev = 2, 3: 再呼び出し時に区間[0, 1)の一様乱数を与えること.
[in,out]irevリバースコミュニケーションの制御変数.
[in] 最初の呼び出し時に 0 に設定しておくこと. 2回目以降の呼び出し時には値を変更してはならない.
[out] 0 以外の場合, 下記処理を行いirevを変更せずに再び本ルーチンを呼び出すこと.
= 0: 処理終了.
= 1: 整数型の一様乱数をiiに設定する. = 2, 3: 区間[0, 1)の一様乱数をyyに設定する.
本関数を呼び出す前にinit_zignorm_r()により初期化しておかなければならない. 初期化を行わずに本関数を呼び出した場合, 既定値を使って自動的に初期化を行う.
参考文献
四辻哲章「確率分布乱数生成法」第2版, プレアデス出版, 2019.