如何在python中使用random.expovariate()生成整数间隔到达时间

python随机模块中,expovariate()函数生成浮点数,该浮点数可用于对泊松过程的到达间隔时间进行建模.如何利用它来生成到达之间的整数倍而不是浮点数?

解决方法:

jonrsharpe已经提到过它,您可以让函数生成浮点数,然后使用int()自己将输出转换为整数

这个

>>> import random
>>> [random.expovariate(0.2) for i in range(10)]
[7.3965169407177465, 6.950770519458953, 9.690677483221426, 2.1903490679843927, 15.769487400856976, 3.508366058170216, 2.1922982271553155, 2.591955678743926, 7.791150855029359, 22.180358323964935]

然后应键入为

>>> import random
>>> [int(random.expovariate(0.2)) for i in range(10)]
[0, 10, 5, 15, 4, 0, 0, 4, 5, 4]

另一个例子

>>> import random
>>> [int(random.expovariate(0.001)) for i in range(10)]
[435, 64, 575, 2147, 1233, 1630, 1128, 899, 180, 1190]

上面的示例使用列表推导在一行中生成多个结果.当然可以减少到

>>> import random
>>> int(random.expovariate(0.1)
5

请注意,如果将更大的数字传递给.expovariate(),则更有可能获得较小的浮点数,并且当使用int()将浮点数转换为整数时,介于0和1之间的数字将转换为0. .

上一篇:对泊松分布的一点理解


下一篇:在c中实现泊松分布