一张不够花、 发表于 2023-5-26 19:54:54

请教大神

生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%。编写程序,输出在不同随机样本数量下,23个人中至少两个人生日相同的概率。

sfqxx 发表于 2023-5-26 20:05:09

我们可以通过模拟的方式来计算出在不同的样本数量下,23个人中至少两个人生日相同的概率。具体方法是随机生成很多个23个人的生日组合进行计算,并统计其中至少存在两个人生日相同的组合数占总组合数的比例。下面是一个示例代码:


import random

def has_same_birthday():
    """判断23个人中是否至少有两个人生日相同"""
    birthdays =
    return len(set(birthdays)) < 23

def estimate_probability(num_samples):
    """根据给定的样本数量估计概率"""
    num_success = sum(has_same_birthday() for _ in range(num_samples))
    return num_success / num_samples

# 计算在不同样本数量下的概率
for num_samples in :
    probability = estimate_probability(num_samples)
    print(f"样本数量为{num_samples}时,23个人中至少两个人生日相同的概率为{probability:.2%}")
上述代码中, has_same_birthday() 函数用于判断 23 个人中是否至少有两个人生日相同,具体做法是随机生成23个整数(对应生日),并使用 set() 函数去重,如果集合的长度小于23,则说明至少有两个人生日相同。estimate_probability() 函数则用于根据给定的样本数量估计概率,具体做法是循环生成指定数量的样本,并计算其中至少存在两个人生日相同的概率。最后,在样本数量分别为 1000、10000、100000 时,我们输出了概率的估计结果。

有用请设置最佳答案{:10_254:}

一张不够花、 发表于 2023-5-26 20:11:32

谢谢哦
页: [1]
查看完整版本: 请教大神