如何用代码实现生日悖论的模拟?
时间: 2024-09-13 10:12:31 浏览: 46
生日悖论是概率论中的一个有趣问题,它告诉我们在一个随机选取的23人的小团体中,至少有两个人生日相同的概率超过50%。这个问题之所以称为“悖论”,是因为直觉上人们往往会低估这种概率。为了用代码模拟这个悖论,我们可以采用简单的随机数生成方法,进行多次实验,并统计至少有两个人生日相同的次数来估算概率。以下是使用Python语言实现的一个简单示例:
```python
import random
def simulate_birthday_paradox(num_people):
birthdays = [random.randint(1, 365) for _ in range(num_people)]
birthdays.sort()
for i in range(len(birthdays)-1):
if birthdays[i] == birthdays[i+1]:
return True
return False
num_trials = 10000 # 模拟次数
num_people = 23 # 小团体人数
num_collisions = 0 # 至少两个人生日相同的次数
for trial in range(num_trials):
if simulate_birthday_paradox(num_people):
num_collisions += 1
probability = num_collisions / num_trials
print(f"在 {num_people} 人的小团体中,至少两个人生日相同的概率约为: {probability:.2%}")
```
在这个代码中,`simulate_birthday_paradox` 函数模拟了一个小团体中各人生日的随机分布,然后检查是否有重复的生日。通过多次执行这个模拟过程(`num_trials` 次),我们可以统计出至少有两个人生日相同的频率,并据此估算概率。
阅读全文