我有一个确定两个人是否有同一个生日的功能
ClassSize=40
Birthdays=numpy.random.randint(366, size=ClassSize)
def SameBday(Birthdays):
if len(Birthdays) != len(set(Birthdays)):
print "true"
else:
print "false"
我想运行这个函数一定数量的试验,看看它给出了多少次真实,多少次它给出了错误。我应该怎么做呢?
答案 0 :(得分:0)
不是在函数内打印结果,而是返回值。然后你可以多次调用你的函数并将结果存储到一个列表中(在for循环中或通过列表理解)。
def same_birthday(birthday_list):
"""Returns True if there are any shared birthdays in the supplied list"""
return len(birthday_list) != len(set(birthday_list))
num_trials = 100
class_size = 40
trial_results = []
for i in range(num_trials):
birthday_list = numpy.random.randint(366, size=class_size)
trial_results.append(same_birthday(birthday_list))
print(trial_results)
答案 1 :(得分:0)
您可以这样做:
import numpy
def test_same_bday(lst):
if len(lst) != len(set(lst)):
return False # fail to pass
else:
return True # all different, pass the test
class_size=40
birthdays_list = list()
for i in xrange(class_size):
birthdays = numpy.random.randint(366, size=class_size)
birthdays_list.append(birthdays)
result = [test_same_bday(birthdays) for birthdays in birthdays_list]
print 'result: ', result
print 'trials: ', len(birthdays_list)
print 'passed: ', sum(result)
输出示例:
结果:[假,假,假,假,真,假,假,假,假,假,假,假,假,假,假,假,真,假,假,假,假,假,假,假,真,真,假,假,假,假,假,假,假,假,假,假,假,假,假,假 试验:40
通过:4
答案 2 :(得分:0)
你只需要在试验次数的范围内循环,返回len(birthdays) != len(set(birthdays))
,这将是真或假。您可以将在同一天获得两个生日的总时间相加,并简单地从1中减去试用总数/我们生日相同的次数,以获得百分比。
import numpy
def same_bday(birthdays):
return len(birthdays) != len(set(birthdays))
class_size = 40
same = 0
trails = 100000
for trial in range(trails):
birthdays = numpy.random.randint(366, size=class_size)
same += same_bday(birthdays)
print("Total percentage of same birthdays {}",format(1.0 - same / trails))