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

◆ _rgama_r()

void _rgama_r ( double  alpha,
double  beta,
double *  r,
double  yy,
int *  irev 
)

ガンマ分布に従う乱数の生成 (Marsaglia and Tsang の圧搾法) (リバースコミュニケーション版)

目的
ガンマ分布 Γ(α, β) に従う乱数を生成する.
与えられた正規乱数および一様乱数をMarsaglia and Tsang の圧搾法によりガンマ乱数に変換する.
引数
[in]alphaガンマ分布 Γ(α, β) のパラメータ α(形状母数). (α > 0)
[in]betaガンマ分布 Γ(α, β) のパラメータ β(尺度母数). (β > 0)
[out]rガンマ乱数. (> 0)
alpha あるいは beta が正しくないときは0を返す.
[in]yyirev = 1: 再呼び出し時に標準正規乱数を与えること.
irev = 2, 3: 再呼び出し時に区間(0, 1)の一様乱数を与えること.
[in,out]irevリバースコミュニケーションの制御変数.
[in] 最初の呼び出し時に 0 に設定しておくこと. 2回目以降の呼び出し時には値を変更してはならない.
[out] 0 以外の場合, 下記処理を行いirevを変更せずに再び本ルーチンを呼び出すこと.
= 0: 処理終了.
= 1: 標準正規乱数をyyに設定する. = 2, 3: 区間(0, 1)の一様乱数をyyに設定する.
参考文献
四辻哲章「確率分布乱数生成法」第2版, プレアデス出版, 2019.