gpt4 book ai didi

python - random.expovariate(rate) 和 numpy.random.poisson(quantity) 产生相同的平均值,但分布却大不相同。为什么是这样?

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:53 27 4
gpt4 key购买 nike

我正在对我们在整个公司使用的负载测试框架进行一些修改,这是一个我很想得到答案的问题。

我的印象是以下两种生成泊松分布的方法是等价的,但我显然错了:

#!/usr/bin/env python                                                                            

from numpy import average, random, std
from random import expovariate

def main():

for count in 5.0, 50.0:
data = [random.poisson(count) for i in range(10000)]
print 'npy_poisson average with count=%d: ' % count, average(data)
print 'npy_poisson std_dev with count=%d: ' % count, std(data)

rate = 1 / count
data = [expovariate(rate) for i in range(10000)]
print 'expovariate average with count=%d: ' % count, average(data)
print 'expovariate std_dev with count=%d: ' % count, std(data)

if __name__ == '__main__':
main()

这导致输出看起来像:

npy_poisson average with count=5:   5.0168
npy_poisson std_dev with count=5: 2.23685443424
expovariate average with count=5: 4.94383067075
expovariate std_dev with count=5: 4.95058985422
npy_poisson average with count=50: 49.9584
npy_poisson std_dev with count=50: 7.07829565927
expovariate average with count=50: 50.9617389096
expovariate std_dev with count=50: 51.6823970228

为什么当我使用内置的 random.expovariate 时标准偏差与给定时间间隔内的事件数量成比例,而 expovariate std_deviation 以对数基数 10(计数)的速率缩放?

跟进问题:如果您要模拟用户与您的服务交互的频率,哪一个更合适?

最佳答案

因为你的假设是错误的。泊松分布的均值/方差均为 lambda,因此 stdevsqrt(lambda)。指数分布的均值/方差分别为 1/lambda1/lambda^2。所以 std = sqrt(1/(1/rate)^2) = sqrt(rate^2) = rate 这正是您在这里看到的。

我建议阅读关于 queuing theory 的维基百科文章对于您的后续问题。

关于python - random.expovariate(rate) 和 numpy.random.poisson(quantity) 产生相同的平均值,但分布却大不相同。为什么是这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14620894/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com