生日悖论指如果一个房间里有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()