用python写一个程序,包含两个函数data(n)和run(m)
data用来随机生成n个人的生日并返回是否有重复
run用来多次重复运行data(m可设置运行次数)并统计不同n时至少有两个人的生日重复的概率。
其实就是想证明传说中的生日悖论啦。
下面贴代码,pycharm一直运行无结果,也找不到语法错误,大神帮帮忙啊。
import random
import collections
def data(n):
k = 0
data_n = []
while k <= n:
month, day = random.randrange(1, 13), random.randrange(1, 32)
if (month, day) in [(2, 29), (2, 30), (2, 31), (4, 31), (6, 31), (9, 31), (11, 31)]:
continue
data_n.append((month, day))
k = k+1
return n if len(set(data_n)) < len(data_n) else 0
def run(m, keys=range(5, 101, 5)):
k = 0
data_back = []
print('统计', m, '次数据的结果是:')
while k < m:
for a in keys:
data_back.append(data(a))
k = k+1
c1 = collections.Counter(data_back)
for key in keys:
print('在', key, '人中存在两人生日相同的概率是:', c1[key]/m)
这是运行结果: