为什么我在不同的地方打印时结果会不同?

2024-06-16 12:00:12 发布

您现在位置:Python中文网/ 问答频道 /正文

    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循环中打印时会有所不同


Tags: inforreturndefrangerandombirthdatebirthdays
2条回答

birthdayProb调用sameDate,它使用random.choice()。因此,通过设计,即使输入相同,两次试验之间的结果也会有一些变化

如果您希望试验是可重复的,但仍然具有随机性,请考虑使用^ {CD4>}在调用^ {< CD1>}之前设置种子,以确保^ {< CD3>}每次都给出相同的结果。p>

这不是for循环的错误。这是由于在代码中使用了randombirthdayProb函数调用sameDate函数sameDate函数正在使用random.choice(possibleDates),因此每次调用它的结果都会略有不同

相关问题 更多 >