皆起于赌,假设这一组有N=30个人。换个说法:你敢不敢用10美元赌里面有两个同月同日生的人?这就有意思了。
直接上代码直观看一下
import matplotlib.pyplot as plt
import numpy as np
#存在至少两人生日在同一天的概率
#思路:1-α(所有人生日不在同一天)
#例子:2人生日在同一天的概率
#P=1-(366*365/366*366)
def calMolecule(n,c,k):#计算分子 366*365*364*...
if(n>c-k+1):
return n*calMolecule(n-1,c,k)
else:
return n
def calDenominator(n,c,k):#计算分母 366*366*...
if (c<k):
return n * calDenominator(n, c+1,k)
else:
return n
if __name__ == '__main__':
#1人一组到80人一组
x = np.arange(1, 80)
list =[]
for k in range(1,80):
list.append(1 - calMolecule(366, 366, k) / calDenominator(366, 1, k))
plt.xlabel('num')
plt.ylabel('probability')
plt.plot(x, list)
plt.show()
一组有30人时,这个赌注赢得概率就差不多70%了,这个期望收益就很不错了10*0.7-10*0.3=4