编写python程序,输出在不同随机样本数量下,23个人中至少两个人生日相同的概率。
时间: 2023-05-23 13:05:28 浏览: 144
l1至少两人同天生日概率程序.R
以下是一个基于蒙特卡罗模拟的示例程序,可以输出在不同的随机样本数量下,23个人中至少两个人生日相同的概率:
```python
import random
def simulate_birthday_paradox(num_trials, num_people):
num_successes = 0
for i in range(num_trials):
birthdays = [random.randint(1, 365) for _ in range(num_people)]
if len(set(birthdays)) != num_people:
num_successes += 1
return num_successes / num_trials
# 示例输出
num_trials = 100000
for num_people in range(1, 24):
prob = simulate_birthday_paradox(num_trials, num_people)
print(f"{num_people} people: {prob}")
```
这段代码中,`simulate_birthday_paradox`函数用来模拟一组样本中是否存在两个人生日相同的情况。它接受两个参数:`num_trials`表示模拟的样本数量,`num_people`表示样本中的人数。在每一次模拟中,我们随机生成`num_people`个1到365的整数(代表23个人的生日),并检查这些整数中是否存在重复的。如果存在,就算作一次成功(即至少两个生日相同的情况)。
主程序使用一个循环遍历23个人到逐渐增加的样本大小,调用`simulate_birthday_paradox`进行了多次模拟,然后输出每个样本大小下的概率。在这个示例程序中,我们使用了100000次模拟来近似计算概率。不过需要注意的是,样本数量较小时误差可能较大,因此我们一般需要使用更大的值来提高计算准确性。
阅读全文