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