random.expovariate是否等同于泊松过程?
我在某个地方看到,Python的库函数random.expovariate可以产生和泊松过程事件相等的时间间隔。
这是真的吗?还是说我应该对结果使用其他的函数呢?
2 个回答
5
https://stackoverflow.com/a/10250877/1587329 里有个很好的解释,讲了为什么这个方法有效(不仅仅适用于Python),还有一些代码示例。简单来说,
可以用下面的方式模拟一个泊松过程中的前10个事件,假设平均每秒有15个到达:
import random for i in range(1,10): print random.expovariate(15)
9
从你问题的字面意思来看,是的,random.expovariate就是这么回事。
expovariate会给你生成随机的浮点数,这些数是按照指数分布的。在泊松过程里,连续事件之间的时间间隔是呈指数分布的。
不过,我能想到还有另外两种方式来模拟泊松过程:
- 直接生成随机数,这些数是均匀分布的,然后把它们排序。
- 生成符合泊松分布的整数(也就是说,它们的分布方式就像在固定时间间隔内发生的事件数量)。可以用numpy.random.poisson来实现。
当然,这三种方法都是完全不同的。选择哪种方法取决于你的具体应用场景。