7-11 jmu-python-生日悖论

生日悖论,指如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。尝试编程验证。

验证方法提示:使用从1到365的整数代表生日。测试n次,每次生成23个随机数,随机数的范围从1到365(包括365)。
然后查看有无重复的生日。
最后算出重复的比率。

输入格式:

随机数种子x 测试次数n

注意:需将x转换为整数型再进行设置。

输出格式:

rate=算出的比率,比率保留2位小数

输入样例:

3 1000

输出样例:

rate=0.54

 

参考代码

# 导入random库,用于生成随机数
import random

# 从输入中读取两个数字,分别赋值给x和n
x, n = map(int, input().split())

# 使用seed()函数设置随机数种子为x
random.seed(x)

# 初始化变量f为0,用于记录重复生日的次数
f = 0

# 进行n次实验
for i in range(n):
    # 定义一个空集合s,用于存储每次实验生成的23个随机数(模拟23个人的生日)
    s = set()

    # 进行23次循环,每次生成一个1到365之间的随机整数,并加入集合s中
    for j in range(23):
        c = random.randint(1, 365)
        s.add(c)

    # 判断集合s中是否有重复元素(即是否有相同的生日),如果有,则将f加1
    if len(s) < 23:
        f += 1

# 输出实验结果,即重复生日的概率
print("rate={:.2f}".format(f / n))

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值