Python 从总体x计算累积概率
我怎样才能创建一个函数(我们称之为生日(x)),用循环计算至少两个人有相同生日(忽略闰年)的概率,Python 从总体x计算累积概率,python,loops,probability,Python,Loops,Probability,我怎样才能创建一个函数(我们称之为生日(x)),用循环计算至少两个人有相同生日(忽略闰年)的概率,p(x)?概率公式为: p(x)=1−365/365⋅364/365⋅363/365…(366−x) /365 我猜我应该重复给定数字的公式,x,但不确定如何重复。提前谢谢 编辑:x是至少有两个人生日相同的人数 #For y peoples; Or for y plays of roulette and x outcomes def odds(x,y): return x/x**y pri
p(x)
?概率公式为:
p(x)=1−365/365⋅364/365⋅363/365…(366−x) /365
我猜我应该重复给定数字的公式,x
,但不确定如何重复。提前谢谢
编辑:x
是至少有两个人生日相同的人数
#For y peoples; Or for y plays of roulette and x outcomes
def odds(x,y):
return x/x**y
print (odds(365,2))
#For at least 2 peoples within a group of n peoples
import math
def grp_odds(x,n):
return 1-math.factorial(x)/(x**n*math.factorial(x-n))
print (grp_odds(365,2))
print (grp_odds(365,5))
输出:
0.0027397260273972603
0.002739726027397249
0.02713557369979358
你可以通过考虑2月29日怎么样来让它更华丽;) 您试图计算的是。因此,对于
x
人口,您想知道至少有两个人的生日在同一天的概率。您可以使用以下选项:
import math
# x is the size of your population
def birthday(x):
# Probability of having birthay in a specific day of the year
p = 1/365
q = 1-p
acc = 0
# Summing from 2 until size of population (you need at least 2)
for i in range(2,x+1):
acc += (math.factorial(n)*(p**i)*(q**(n-i)))/(math.factorial(i)*math.factorial(n-i))
return acc
我不明白。两个人生日相同的概率是1/365。需要什么循环?@ThePilotDude因为它似乎是xOh人口中的2人,现在有意义了。你的公式只适用于人口的情况,他命名的
x
也是2。他要问的是,在一组x中找到至少两个人的概率是如何随x的值而变化的。同一天有两个人过生日的可能性不是由x=2
人组成的小组,让我们假设x=366
检查他的编辑:“x是至少两个人过同一个生日的人数”。概率随组的大小而变化。这就是我之前在评论中对你的解释。如果x=2,则为您给出的值。如果这个组是366,那么你现在可以肯定至少有两个人会在同一天过生日,所以会比0.0027高得多谢谢大家,我纠正了;)