用python验证生日悖论
时间: 2024-02-28 18:27:55 浏览: 126
生日悖论是指在一个包含至少23个人的房间里,至少有两个人生日相同的概率大于50%。为了验证这个悖论,可以使用Python编写一个模拟程序。
以下是一个简单的Python程序,用于验证生日悖论:
```python
import random
def has_duplicates(lst):
"""判断列表中是否有重复元素"""
return len(lst) != len(set(lst))
def generate_birthday():
"""生成一个随机生日"""
return random.randint(1, 365)
def simulation(num_people):
"""进行一次模拟,返回是否有两个人生日相同"""
birthdays = [generate_birthday() for i in range(num_people)]
return has_duplicates(birthdays)
def calculate_probability(num_people, num_simulations):
"""计算概率"""
num_successes = 0
for i in range(num_simulations):
if simulation(num_people):
num_successes += 1
return num_successes / num_simulations
if __name__ == '__main__':
num_people = 23
num_simulations = 10000
probability = calculate_probability(num_people, num_simulations)
print(f"在 {num_people} 个人中至少有两个人生日相同的概率为 {probability:.2%}")
```
这个程序首先定义了一个`has_duplicates`函数,用于判断一个列表中是否有重复元素。然后定义了一个`generate_birthday`函数,用于生成一个随机生日。接着定义了一个`simulation`函数,用于进行一次模拟,返回是否有两个人生日相同。最后定义了一个`calculate_probability`函数,用于计算概率。
在主程序中,设置了23个人和10000次模拟,并调用`calculate_probability`函数计算概率。最后输出结果。
运行程序,可以得到类似以下的结果:
```
在 23 个人中至少有两个人生日相同的概率为 50.13%
```
可以看到,这个结果符合生日悖论的预期。
阅读全文