终于有人把生日悖论讲明白了

👨‍🎓博主简介

  🏅CSDN博客专家
  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


生日悖论是一个概率论中的现象,它说明了在一定的条件下,一个不太可能的偶然事件发生的概率会比直觉认为的要大得多。具体来说,生日悖论指的是,在一个随机选择的23人群体中,至少有两个人生日相同的概率超过50%。

假设一个班级有23个学生,我们可能会直觉地认为班级里至少有两个人生日相同的概率很低。但实际上,我们可以这样计算:第一个学生的生日可以是任意一天,第二个学生的生日与第一个学生不同的概率是364/365,第三个学生的生日与前两个都不同的概率是363/365,以此类推。当计算到第23个学生时,至少有两个人生日相同的概率已经超过了50%。

具体计算如下:

在这里插入图片描述

所以,23个人中至少有两个人生日相同的概率大约是50.73%。

在很多人看来,这个概率出人意料地高。如果你对这个结论持怀疑态度,还可以利用计算机生成随机数进行模拟试验。

  • 代码1:生日悖论模拟试验
import random

def birthday_paradox试验(人数, 试验次数):
    生日相同次数 = 0
    for _ in range(试验次数):
        生日列表 = [random.randint(1, 365) for _ in range(人数)]
        if len(生日列表) != len(set(生日列表)):
            生日相同次数 += 1
    return 生日相同次数 / 试验次数

# 设置人数为23,试验次数为10000次
人数 = 23
试验次数 = 10000
概率 = birthday_paradox试验(人数, 试验次数)
print(f"在{人数}个人中,至少有两个人生日相同的概率为:{概率:.4f}")

以上代码通过随机模拟10000次试验来计算概率,输出结果可能在50%到52%之间波动,但总体上会接近理论值 50.73%。

而如果一个班级的人数是50人,至少有两个同学同一天生日的概率大约是97.04%。如果让这个概率超过99%,班级中至少需要有57名学生。由此可见在一个50-60人的班级里,至少有两个同学在同一天过生日完全是个大概率事件。

  • 代码2:50人班级里至少有两个同学同一天生日的概率

from math import factorial

def calculate_probability(n, k):

    # Probability that no one shares a birthday
    prob_no_shared = 1
    for i in range(n):
        prob_no_shared *= (k - i) / k

    # Probability that at least two people share a birthday
    prob_shared = 1 - prob_no_shared
    return prob_shared

# Calculate the probability for a class of 50 students
probability_50_students = calculate_probability(50, 365)
probability_50_students
  • 代码3:两个同学同一天生日的概率超过99%,班级里至少有多少人
import math

# Setting the target probability
target_probability = 0.99

# Initial values
n = 0
probability = 0

# Incrementing n until the probability is above the target
while probability < target_probability:
    n += 1
    probability = 1 - math.prod([(365 - i) / 365 for i in range(n)])

n

生日悖论在算法中的应用主要体现在概率算法和蒙特卡洛方法上。这些算法利用了生日悖论中的概率原理,通过随机抽样来估计某个问题的解。例如,在密码学中,生日攻击是一种利用生日悖论原理来破解哈希函数的攻击方式。

探索更多生日悖论对计算机算法的启发,推荐你阅读《算法导论》。

延伸阅读

在这里插入图片描述

推荐理由:MIT四大名师联手铸就。算法标准教材,国内外千余所高校采用!影响全球千万程序员!本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。

文末福利

《算法导论》 免费包邮送出!

正版购买链接:
京东链接:https://item.jd.com/11144230.html
当当链接:https://product.dangdang.com/22927209.html

▲点击链接立即抢购

  • 抽奖方式:微信小程序随机抽取小伙伴免费送出!送出几本基于阅读量来决定(最高2本)。
  • 参与方式:关注博主、点赞、收藏、评论区任意评论即可(切记要点赞+收藏,否则抽奖无效!)
  • 活动截止时间:2025-04-24 9:00:00

或点击连接抽奖: https://lucky.nocode.com/v2/s/8IzL0dC9ji1

中奖名单

中奖名单于活动结束后在抽奖小程序展示。

在这里插入图片描述

评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A-刘晨阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值