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

Python 从给定概率的列表中查找整数个项目,python,python-3.5,probability,Python,Python 3.5,Probability,假设,我有一个长度为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中,如何获得给定概率的事

假设,我有一个长度为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中获得它

您可以在python代码中使用类似于
int(len(m)*prob)
的东西,这样就可以了。一定要用try/catch来避免错误。

您还应该验证
prob
值是否包含在0和1之间

您可以在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))

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

如果要模拟此随机变量(而不是计算其预期值),可以使用:

import random

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

prob*len(m)
?你似乎太复杂了。概率和选择的项目数之间有关系吗??我不相信有?它是否应该是int(prob*len(m)),就像约翰·科尔曼所说的那样?
prob*len(m)
?你似乎太复杂了。概率和选择的项目数之间有关系吗??我不相信有?应该是int(prob*len(m)),就像约翰·科尔曼说的那样?当你从乘法中得到整数时,prob*len(m)效果很好,但是当你得到一个十进制数时,你需要使用int(len(m)*prob进行四舍五入。假设列表的固定长度为20,prob=0.113,则得到2.26,使用int()则得到2。在绘制1000次元素数量后(2*1000 vs 2.26*1000),会导致总计数出现很大差异。有没有其他方法可以直接从概率计算中获得整数个项目而不使用int(),类似于泊松分布,它返回一个时间段内的整数个事件)?@HT121预期的数字是
prob*len(m)
。我不明白你为什么要用一个数学上有意义的答案来回答一个没有那么有意义的问题。如果它不是你想要计算的预期数字,你想做什么?请注意,当您运行实验时,实际选择的数字将是一个整数,但在不同的试验中会有所不同。当你平均许多这样的试验时,结果不一定是一个整数。实际上,我需要知道每24小时有多少代理将移动到一个新的位置。所以这些代理数只能是整数。我可以在给定概率的情况下选择随机代理并移动它,但问题是,我需要首先查看新位置是否有空闲位置来容纳新代理。因此,我想首先提取在未来24小时内要移动的代理的数量,然后每一个非常小的时间步,我都会继续寻找下一个位置是否有可用的空间a。如果可用,我会随机选择一个代理,移动并从count变量中减去1。但无论如何,谢谢您,您的答案对于一般情况来说是完全正确的。@HT121我添加了有关如何模拟随机变量的信息(Python的随机模块缺少生成此类随机变量的直接方法,因此您必须编写自己的函数)(或使用另一个模块)).Prob*len(m)在从乘法中得到整数时工作正常,但当得到十进制数时,则需要使用int(len(m)*Prob)进行四舍五入。假设列表的固定长度为20,Prob=0.113,则得到2.26,使用int(),得到2。在绘制元素数1000次后(2*1000 vs 2.26*1000),会导致总计数出现很大差异。是否有其他方法可以直接从概率计算中获得整数个项目,而不使用int(),类似于泊松分布,它返回一个时间段内的整数个事件)?@HT121预期数量为
prob*len(m)
。我不明白你为什么要用一个数学上有意义的答案来回答一个没有那么有意义的问题。如果它不是你想要计算的预期数字,你想做什么?请注意,当您运行实验时,实际选择的数字将是一个整数,但在不同的试验中会有所不同。当你平均许多这样的试验时,结果不一定是一个整数。实际上,我需要知道每24小时有多少代理将移动到一个新的位置。所以这些代理数只能是整数。我可以在给定概率的情况下选择随机代理并移动它,但问题是,我需要首先查看新位置是否有空闲位置来容纳新代理