生日悖论,指如果一个房间里有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))