我试图用Python解决生日悖论。我很接近,但最后一块让我不知所措。我使用random生成一个给定范围和数量的数字列表。这很管用。在
然后我检查一个列表(上面生成的)是否有重复项。这很管用。在
然后我尝试生成一个给定的(n)个列表。这就是我遇到麻烦的地方。它生成一个列表,然后返回“NoneType”is not iterable。让我困惑的是,这个列表是生成的,但是Python并没有把它看作一个列表。在
代码如下:def make_bd(n, r):
"""Generates (r) numbers of birthdays in a range (n)."""
import random
t = [random.randrange(n) for i in range(r)]
print (t)
def has_dupe(test):
"""Here I test to see if I can detect a duplicate birthday.
This is based on problem #4."""
d = []
count = 0
for number in test:
if number in d:
count = count + 1
d.append(number)
if count >= 1:
return True
return False
def dupebd(n,r,t):
count_dupe = 0
for i in range(n):
if has_dupe(make_bd(r,t)):
count_dupe = count_dupe + 1
print (float(count)/n)
dupebd(50,365,23)
结果如下:
^{pr2}$