XLPack 7.0
XLPack 数値計算ライブラリ (C API) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ zigexp()

double zigexp ( int(*)()  iurand,
double(*)()  durand,
double  theta 
)

指数分布に従う乱数の生成 (Ziggurat法)

目的
指数分布 Exp(θ) に従う乱数を生成する.
与えられた一様乱数生成関数を使用して生成した一様乱数をZiggurat法により指数乱数に変換する.
戻り値
指数乱数 (>= 0).
引数
[in]iurand整数型の一様乱数を生成する関数で, 次のように定義すること.
int iurand(void)
{
return 整数型の一様乱数;
}
下位7ビットまたは8ビット(init_zigexp()で指定)のみが使用される.
[in]durand区間[0, 1)の実数型の一様乱数を生成する関数で, 次のように定義すること.
double durand(void)
{
return 実数型の一様乱数;
}
これを使って生成された実数乱数が指数乱数に変換される.
[in]theta指数分布 Exp(θ) のパラメータθ.
本関数を呼び出す前にinit_zigexp()により初期化しておかなければならない. 初期化を行わずに本関数を呼び出した場合, 既定値を使って自動的に初期化を行う.
参考文献
四辻哲章「確率分布乱数生成法」第2版, プレアデス出版, 2019.