def sameDate(numPeople, numSame):
possibleDates = range(366)
birthdays = [0]*366
for p in range(numPeople):
birthDate = random.choice(possibleDates)
birthdays[birthDate] += 1
return max(birthdays) >= numSame
def birthdayProb(numPeople, numSame, numTrials):
numHits = 0
for t in range(numTrials):
if sameDate(numPeople, numSame):
numHits += 1
return numHits/numTrials
print(birthdayProb(20,2,10000))
random.seed(0)
import math
for numPeople in [20]:
print(birthdayProb(numPeople, 2, 10000))
第一次打印的结果:0.4143 循环内部打印结果:0.4035 为什么在for循环中打印时会有所不同
birthdayProb
调用sameDate
,它使用random.choice()
。因此,通过设计,即使输入相同,两次试验之间的结果也会有一些变化如果您希望试验是可重复的,但仍然具有随机性,请考虑使用^ {CD4>}在调用^ {< CD1>}之前设置种子,以确保^ {< CD3>}每次都给出相同的结果。p>
这不是for循环的错误。这是由于在代码中使用了
random
birthdayProb
函数调用sameDate
函数sameDate
函数正在使用random.choice(possibleDates)
,因此每次调用它的结果都会略有不同相关问题 更多 >
编程相关推荐