ErickWho 2019-10-24
一个班级有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位同学,就有超过一半的可能性有可能生日在同一天。
计算不出现相同生日的概率:
出现相同生日的概率是:1−p 1-p1−p
当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计算四舍五入?还是哪里出错了?
后记
为什么会出现这样的情况?
最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。