最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

网站源码admin2浏览0评论

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

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

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

具体计算如下:

图片

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

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

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

代码语言:javascript代码运行次数:0运行复制
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人班级里至少有两个同学同一天生日的概率

代码语言:javascript代码运行次数:0运行复制
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%,班级里至少有多少人

代码语言:javascript代码运行次数:0运行复制
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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-04-15,如有侵权请联系 cloudcommunity@tencent 删除事件算法原理probability密码学
发布评论

评论列表(0)

  1. 暂无评论