生日悖论指如果一个房间里有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=0for j in bir:if i==j:num=num+1if num > 1:return 1return 0x=np.linspace(10,50,41)
y=[]
for i in range(10,51):count=0for 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/10000y.append(bit)print("n=",i,"概率=",bit)
#绘图
plt.plot(x,y)
plt.show()
运行结果:
绘制的曲线图: