请教大神
生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%。编写程序,输出在不同随机样本数量下,23个人中至少两个人生日相同的概率。我们可以通过模拟的方式来计算出在不同的样本数量下,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:} 谢谢哦
页:
[1]