正規乱数の発生
パーセント点を求める戸田の公式の応用 Last modified: May 15, 2002
# 正規分布のパーセント点を求める戸田の公式を用いて正規乱数を発生する
function n_rand()
{
return toda(rand())
}
function toda(p, retv, y, e, f, g, h, i, j, k, l, m, n, o)
{
e = 0.6936233982e-12
f = 0.3657763036e-10
g = -0.3231081277e-08
h = 0.8360937017e-07
i = -0.1045274970e-05
j = 0.5824238515e-05
k = 0.6841218299e-05
l = -0.2250947176e-03
m = -0.8364353589e-03
n = 0.3706987906e-01
o = 1.570796288
y = -log(4*p*(1-p))
retv = sqrt(((((((((((y*e+f)*y+g)*y+h)*y+i)*y \
+j)*y+k)*y+l)*y+m)*y+n)*y+o)*y)
return (p < 0.5) ? -retv : retv
}
直前のページへ戻る E-mail to Shigenobu AOKI