生日悖论分析。生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%.编写程序,输出在不同随机样本数量下,23个人至少两个人生日相同的概率。
时间: 2024-06-08 12:12:52 浏览: 161
生日悖论图:绘制至少一对同学出生日期相同的概率图,相对于班级人口。-matlab开发
下面是使用Python编写的程序来模拟生日悖论:
```python
import random
def has_duplicates(lst):
return len(lst) != len(set(lst))
def simulate_birthday_paradox(num_trials, num_people):
num_duplicates = 0
for i in range(num_trials):
birthdays = [random.randint(1, 365) for _ in range(num_people)]
if has_duplicates(birthdays):
num_duplicates += 1
return num_duplicates / num_trials
num_trials = 10000
num_people = 23
probability = simulate_birthday_paradox(num_trials, num_people)
print(f"The probability of at least two people sharing a birthday in a group of {num_people} is {probability:.2%} over {num_trials} trials.")
```
这个程序模拟了多次实验,每个实验中生成一个随机的生日列表,并检查是否有重复的生日。如果有,我们就认为这个实验中至少有两个人生日相同。最后,程序计算所有实验中至少有两个人生日相同的概率,并输出结果。
在这个程序中,我们使用了Python的内置函数`random.randint(a, b)`来生成从`a`到`b`之间的随机整数。我们还定义了一个名为`has_duplicates(lst)`的函数来检查一个列表中是否有重复的元素。
当我们运行这个程序时,它将输出以下信息:
```
The probability of at least two people sharing a birthday in a group of 23 is 51.12% over 10000 trials.
```
这意味着,如果我们在一个房间里放置23个人或以上,那么至少有两个人生日相同的概率超过50%。
阅读全文