如何在Python中使用random.expovariate()生成整数到达时间间隔
在Python的random
模块中,expovariate()
这个函数可以生成浮点数,这些浮点数可以用来模拟泊松过程中的到达时间间隔。那我该怎么做才能生成到达之间的整数时间,而不是浮点数呢?
1 个回答
4
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。