【发布时间】:2017-09-20 05:01:56
【问题描述】:
我正在编写一个函数(不使用 random.poisson 函数),它从具有 lambda a 的泊松分布中生成一个随机数。
运行不同参数的函数时,我总是得到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
尝试不同的 lambda 值:
print(random_poisson(3))
print(random_poisson(5))
print(random_poisson(math.log(5)))
输出:
0
0
0
非常感谢!
【问题讨论】:
-
请举例说明您使用的参数。
-
@DYZ 我添加了例子:)
-
您应该预先计算
math.exp(-a)并在您的while的比较中使用存储的结果。