年份= [0] * 365在此Python生日悖论代码中的含义

问题描述 投票:-1回答:2

我试图编写“生日悖论”的函数。我在互联网上找到了一些示例,并成功地将所有内容与一些修改结合在一起,但是仍然有些我的程序不了解的内容。

这是我的程序:

# The Birthday Paradox

print "If there are 23 students in your class, what are the chances that another student and you will have birthday in the same day?"
print ""
print "Use the function has_duplicates(numExamples) to check it out!"
print "Please write in (numExamples) the number of examples of different lists of birthdays of 23-students-classes you want to check."

def has_duplicates(numExamples):

import random
probability = float()

for example in range(numExamples):
   year = [0]*365
   print year
   foundprobability = False
   for i in range(23):
       birthday = random.randrange(365)
       year[birthday] = year[birthday] + 1
       if year[birthday]>1:
          foundprobability = True

   if foundprobability == True:
       probability = probability + 1

countprobabilty = float(probability/numExamples)
print "The probability of a shared birthday in", numExamples,
print "examples of different lists of birthdays of 23-students-classes is", countprobabilty

我不明白这行是什么意思:

year = [0]*365

我为什么要这样的列表[0,0,0,0 ...]?

谢谢!内塔生物学系的学生

python function random probability birthday-paradox
2个回答
1
投票

因为该算法要求在365天的每一天都有一个计数器,如下所示:

   year[birthday] = year[birthday] + 1

为了使year[birthday]出现在此语句中,它必须已经预先初始化,然后

    year = [0] * 365

初始化它。


1
投票

[year = [0]*365创建一个包含365个值为0的元素的列表:[0,0,0,0...]

birthday = random.randrange(365)创建一个从0到365的列表,并选择一个随机元素。参见https://docs.python.org/2/library/random.html#random.randrange

© www.soinside.com 2019 - 2024. All rights reserved.