首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码中的def paradox_stats()函数是什么?

代码中的def paradox_stats()函数是什么?
EN

Stack Overflow用户
提问于 2021-07-09 06:58:39
回答 1查看 48关注 0票数 0

我正在努力学习如何编写一个函数来测试一个房间里两个人的生日概率。

生日悖论说,两个人在一个房间里过同一个生日的概率是一半以上,前提是房间里的人数超过23。这并不是一个真正的悖论,但许多人发现它令人惊讶。设计一个Python程序,它可以通过随机生成的生日的一系列实验来测试这个悖论,这个程序在n= 5,10,15,20,…,100中测试这个悖论。

这是我书中显示的代码。

代码语言:javascript
复制
import random
def test_birthday_paradox(num_people):
    birthdays = [random.randrange(0,365) for _ in range(num_people)]
    birthday_set = set()
    for bday in birthdays:
        if bday in birthday_set: return True
        else: birthday_set.add(bday)
    return False


def paradox_stats(num_people = 23, num_trials = 100):
    num_successes = 0
    for _ in range(num_trials):
        if test_birthday_paradox(num_people): num_successes += 1
    return num_successes/num_trials

paradox_stats(31)
0.77

我无法理解从def paradox_stats到代码末尾的代码。有人能帮帮我吗?

代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-09 08:29:45

猜测paradox_state(31)是一个错误,您想要编写paradox_stats(31)

def paradox_stats(num_people = 23, num_trials = 100):是可以插入两个变量的函数的定义(这些变量是可选的)。

num_successes = 0代码正在将变量num_successes初始化为零。

代码语言:javascript
复制
for _ in range(num_trials):
        if test_birthday_paradox(num_people): num_successes += 1
return num_successes/num_trials

在这里,代码正在运行,抛出的范围从0到用户在调用函数时可以定义的试验次数(请记住,它是一个可选变量)。

在这个循环中,代码使用了前面的函数test_birthday_paradox (据您在问题中所述,它应该是您所理解的)来了解房间中的某个人是否有相同的生日。如果函数返回True (某人有相同的生日),变量num_successes在一个变量中增加其值(这是+=语法的工作方式,但如果需要进一步解释,num_successes+=1 == num_successes = num_successes+1)。

当循环完成后,函数paradox_stats返回随机样本中的概率作为成功次数和试验次数。

希望我的回答能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68312496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档