【问题标题】:Generating random poisson numbers生成随机泊松数
【发布时间】: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 的比较中使用存储的结果。

标签: python random poisson


【解决方案1】:

对于任何正数amath.exp(a) 大于 1,但 p 为 1。循环条件永远不会为真,循环永远不会执行,并且您的函数返回初始值 x

【讨论】:

  • 哦,我知道了!它应该是-a,而不是a。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2020-09-28
  • 2011-06-26
  • 1970-01-01
  • 2012-03-12
  • 2010-11-17
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多