Python关于生日悖论分析

生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%。编写程序,输出在10000例随机样本数量下,n个人中至少两个人生日相同的概率。(n从10到50,不考虑闰年)
代码:

import random
import numpy as np
import matplotlib.pyplot as plt

#检测birthday中是否有同一天的生日
def same(bir):
    for i in bir:
        num=0
        for j in bir:
            if i==j:
                num=num+1
        if num > 1:
            return 1
    return 0

x=np.linspace(10,50,41)
y=[]
for i in range(10,51):
    count=0
    for j in range(10000):
        birthday = []
        for z in range(i):
            #产生随机数
            n = random.randint(1, 365)
            birthday.append(n)
        if same(birthday)==1:
            #计数
            count += 1
    #得到概率
    bit=count/10000
    y.append(bit)
    print("n=",i,"概率=",bit)
#绘图
plt.plot(x,y)
plt.show()

运行结果:
Python关于生日悖论分析_第1张图片
Python关于生日悖论分析_第2张图片

绘制的曲线图:
Python关于生日悖论分析_第3张图片

你可能感兴趣的:(Python)