【发布时间】:2015-03-04 10:36:19
【问题描述】:
我想使用泊松测试函数,根据给定的概率p,事件发生与否。 Python 的 random 模块似乎没有这样的东西,所以我想通了
- 把概率p变成分数
- 随机选择一个整数。
- 成功小于 - 或 - 等于分母整数范围中的分子。
但是,我认为这不是给定任务最有效的代码。我也怀疑它的正确性,但我认为它应该是 random.randrange(int) 根据均匀分布工作。
def poisson_test(p):
'''Poisson test with two possible outcomes, where p is success probability'''
import fractions
import random
from decimal import Decimal
p = Decimal('{0}'.format(p))
p = fractions.Fraction(p)
if random.randrange(p.denominator) <= p.numerator :
return True
else:
return False
有什么建议吗???
谢谢!
【问题讨论】:
-
我认为你需要重新考虑你想要做什么。泊松分布描述了您在固定间隔内观察到 0、1、2、... 的可能性有多大,假设该过程具有指定的发生率。你所描述的不是泊松。如果有两种结果,成功或失败,成功的概率是固定的,你就有一个伯努利随机变量。
标签: python events testing random poisson