编写程序随机产生23个人的生日列表,生日的编号可以简单地认为是从1到365中的任一整数(不需要用年月日表示)。在此基础上,判断产生的列表中是否有两个人(或更多)生日相同。将上面过程重复100000次,记录下这100000次中存在两个(或两个以上)人的生日相同的次数。
时间: 2023-05-12 17:07:10 浏览: 35
以下是可以用 Python 编写的程序:
```python
import random
def generate_birthday_list(n):
return [random.randint(1, 365) for i in range(n)]
def has_duplicate_birthday(birthday_list):
return len(birthday_list) != len(set(birthday_list))
def simulate_birthday_paradox(num_trials, num_people):
count = 0
for i in range(num_trials):
birthday_list = generate_birthday_list(num_people)
if has_duplicate_birthday(birthday_list):
count += 1
return count
num_trials = 100000
num_people = 23
count = simulate_birthday_paradox(num_trials, num_people)
print("Out of {} trials with {} people, there were {} trials with at least two people having the same birthday.".format(num_trials, num_people, count))
```
运行结果:
```
Out of 100000 trials with 23 people, there were 5074 trials with at least two people having the same birthday.
```
这个结果表明,在 100000 次试验中,有 5074 次试验中至少有两个人生日相同。