ラムダaのポアソン分布から乱数を生成する関数(random.poisson関数を使用せずに)を書いていました。ランダムポアソン数の生成
異なるパラメータで関数を実行すると、常に0が返されます。アルゴリズムの問題だと思いますが、どこが間違っているのかわかりません。
ここに私のコードです。
#takes a as lambda (mean)
def random_poisson(a):
x = 0
p = 1
while p >= math.exp(a):
i = random.random()
p = p * i
x += 1
return x
異なるラムダ値試す:
print(random_poisson(3))
print(random_poisson(5))
print(random_poisson(math.log(5)))
出力を:
0
0
0
本当にありがとうございました!任意の正a
については
使用したパラメータの例を挙げてください。 – DyZ
@DYZ私は例を追加しました:) – xzhang66
'math.exp(-a)'をあらかじめ計算しておき、 'while'の比較で保存した結果を使うべきです。 – pjs