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

◆ _rgama()

double _rgama ( double(*)()  durand,
double(*)()  dnrand,
double  alpha,
double  beta 
)

ガンマ分布に従う乱数の生成 (Marsaglia and Tsang の圧搾法)

目的
ガンマ分布 Γ(α, β) に従う乱数を生成する.
与えられた乱数生成関数を使用して生成した正規乱数および一様乱数をMarsaglia and Tsang の圧搾法によりガンマ乱数に変換する.
戻り値
ガンマ乱数. (> 0)
alpha あるいは beta が正しくないときは0を返す.
引数
[in]durand区間(0, 1)の実数型の一様乱数を生成する関数で, 次のように定義すること.
double durand(void)
{
return 実数型の一様乱数;
}
[in]dnrand実数型の標準正規乱数を生成する関数で, 次のように定義すること.
double dnrand(void)
{
return 実数型の標準正規乱数;
}
これを使って生成された実数乱数がガンマ乱数に変換される.
[in]alphaガンマ分布 Γ(α, β) のパラメータ α(形状母数). (α > 0)
[in]betaガンマ分布 Γ(α, β) のパラメータ β(尺度母数). (β > 0)
参考文献
四辻哲章「確率分布乱数生成法」第2版, プレアデス出版, 2019.