Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从总体x计算累积概率_Python_Loops_Probability - Fatal编程技术网

Python 从总体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

我怎样才能创建一个函数(我们称之为生日(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

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高得多谢谢大家,我纠正了;)