Python生日悖论分析。生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于 50% 。编写程序,输出在不同随机样本数量下,23个人中至少两个人生日相同的概率。代码
时间: 2024-03-07 21:46:33 浏览: 251
好的,以下是 Python 代码:
```python
import random
def has_duplicate(lst):
return len(lst) != len(set(lst))
def birthday_paradox(num_samples, num_people):
num_duplicates = 0
for i in range(num_samples):
birthdays = [random.randint(1, 365) for _ in range(num_people)]
if has_duplicate(birthdays):
num_duplicates += 1
return num_duplicates / num_samples
num_samples = 100000
num_people = 23
probability = birthday_paradox(num_samples, num_people)
print(f"The probability of at least two people sharing a birthday in a group of {num_people} is {probability:.2%}")
```
这个程序中,我们定义了一个 `has_duplicate` 函数来判断一个列表中是否有重复元素。然后我们定义 `birthday_paradox` 函数来模拟生日悖论,其中 `num_samples` 表示模拟的样本数量,`num_people` 表示在每个样本中出现的人数。最后,我们计算出在模拟样本中至少有两人生日相同的概率,并输出结果。
你可以尝试不同的 `num_samples` 和 `num_people` 值来观察结果。
阅读全文