使用随机抽样实现模拟概率分布 蒙特卡罗方法 生日悖论,遇到与自己同一天过生日的人, 50 个人当中出现这种缘分的概率有多大 写出代码
时间: 2024-03-06 17:51:35 浏览: 104
下面是使用 Python 实现的模拟代码:
```python
import random
def simulate_birthday_paradox(n, m):
count = 0
for i in range(m):
# 生成 n 个人的生日
birthdays = [random.randint(1, 365) for j in range(n)]
# 判断是否有两个或以上的人生日相同
if len(set(birthdays)) != n:
count += 1
# 计算概率
prob = count / m
return prob
# 示例:模拟 10000 次,在 50 个人中至少有两个人生日相同的概率
prob = simulate_birthday_paradox(50, 10000)
print("在50个人中至少有两个人生日相同的概率为:", prob)
```
在上面的代码中,`simulate_birthday_paradox` 函数用于模拟生日悖论。它接受两个参数:`n` 表示人数,`m` 表示模拟次数。在函数内部,我们使用一个循环来进行模拟。在每次循环中,我们首先生成 `n` 个人的生日,然后判断是否有两个或以上的人生日相同。如果有,则计数器 `count` 加 1。最后,根据计数器 `count` 和模拟次数 `m`,计算出在 `n` 个人中至少有两个人生日相同的概率,并返回该概率。
在上面的示例中,我们模拟了 10000 次,在 50 个人中至少有两个人生日相同的概率,并将结果输出到控制台。你可以根据需要修改模拟次数和人数。
阅读全文