如何运行N试验Python的功能

时间:2015-02-03 18:04:44

标签: python

我有一个确定两个人是否有同一个生日的功能

ClassSize=40
Birthdays=numpy.random.randint(366, size=ClassSize)
def SameBday(Birthdays):
    if len(Birthdays) != len(set(Birthdays)):
        print "true"
    else:
        print "false"

我想运行这个函数一定数量的试验,看看它给出了多少次真实,多少次它给出了错误。我应该怎么做呢?

3 个答案:

答案 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))