同一个班级有生日相同的概率。
一个班级有25个同学,有生日在同一天的概率是多少?
代码:
import numpy as np
from numpy import random
NUM_STUDENT = 25
NUM_EXER = 10000
count=0
for i in range(NUM_EXER):
birtdays = []
for j in range(NUM_STUDENT):
birtdays.append(np.random.randint(356))
if len(set(birtdays)) < NUM_STUDENT:
count +=1
print(count/NUM_EXER)
用python重复10000次试验,概率为57.6%。只要有25位同学,就有超过一半的可能性有可能生日在同一天。
直接计算:
计算不出现相同生日的概率:
出现相同生日的概率是:
当n=25,利用python计算:
def factorial(n):
a = 1
for i in range(1, n+1):
a = a*i
return a
k = 1 - factorial(365)/(factorial(365-NUM_STUDENT)*365**NUM_STUDENT)
print(k)
输出56.8%
多次试验都有一定误差,也许是python计算四舍五入?还是哪里出错了?
后记
为什么会出现这样的情况?
类似
,当
时,得到0.78。原理类似。