从给定概率的列表中找出整数个项目

2024-03-29 14:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

假设,我有一个长度为20的列表,每天,我都想从给定概率的列表中找出整数个项目。在提取了项目的整数之后,我想做进一步的操作。你知道吗

m = [10,20,30,40, 50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200]
prob = 0.2

在上面的例子中,我想知道在概率为0.2的情况下,平均每天会选择多少个项目。所以平均来说,从一个长度为20,概率为0.2的列表中,我应该得到每天的项目数=4。在Python中,如何获得给定概率的事件数?我是否应该使用Poisson来获取一个时间段内的事件数,但我不确定如何在Python中的Poisson函数中包含列表的大小。当概率为0.113或0.31等时,如何得到项目的整数。如何在Python中得到这个?你知道吗


Tags: 项目函数列表事件情况整数概率例子
2条回答

您可以在python代码中使用类似int(len(m) * prob)的东西,这样就可以了。一定要用try/catch来避免错误。
您还应该验证prob值是否由0和1组成

假设每个列表元素的选择与否是一个概率为prob的独立事件,选择的项目数是一个参数为len(m)prob的二项式随机变量。这种随机变量的期望值是prob * len(m)。你知道吗

如果你想模拟这个随机变量(而不是计算它的期望值),你可以使用:

import random

def binomial_variate(n,p):
    return sum(random.random() < p for _ in range(n))

例如

>>> trials = [binomial_variate(20,0.12) for _ in range(100)]
>>> trials
[5, 6, 2, 1, 2, 4, 3, 3, 2, 3, 4, 1, 3, 2, 2, 3, 1, 0, 2, 4, 6, 1, 1, 2, 2, 3, 4, 2, 2, 1, 2, 1, 3, 4, 2, 3, 2, 2, 4, 4, 5, 1, 1, 1, 1, 2, 2, 3, 2, 2, 5, 4, 4, 1, 4, 4, 3, 5, 2, 3, 2, 4, 3, 4, 4, 2, 2, 1, 2, 1, 2, 1, 3, 0, 4, 3, 2, 4, 1, 2, 1, 2, 3, 2, 2, 3, 2, 1, 4, 4, 2, 2, 2, 2, 2, 3, 3, 3, 4, 2]
>>> sum(trials)/100
2.55
>>> 20*0.12
2.4

相关问题 更多 >