编写程序随机产生23个人的生日列表,生日的编号可以简单地认为是从1到365中的任一整数(不需要用年月日表示)。在此基础上,判断产生的列表中是否有两个人(或更多)生日相同。将上面过程重复100000次,记录下这100000次中存在两个(或两个以上)人的生日相同的次数。
时间: 2023-05-12 16:06:09 浏览: 57
以下是可以用 Python 编写的程序,用于随机产生23个人的生日列表,并判断是否有两个或更多人生日相同:
```python
import random
def has_duplicate(birthdays):
return len(birthdays) != len(set(birthdays))
def generate_birthday_list():
return [random.randint(1, 365) for _ in range(23)]
num_duplicates = 0
num_trials = 100000
for i in range(num_trials):
birthdays = generate_birthday_list()
if has_duplicate(birthdays):
num_duplicates += 1
print(f"Number of trials: {num_trials}")
print(f"Number of trials with duplicate birthdays: {num_duplicates}")
print(f"Probability of two or more people having the same birthday: {num_duplicates / num_trials:.6f}")
```
这个程序会运行100000次,每次随机生成23个人的生日列表,并检查是否有两个或更多人生日相同。最后,程序会输出100000次中存在两个或两个以上人的生日相同的次数,以及这个概率。