Работа вам нужна срочно. Не волнуйтесь, уложимся!
Заполните, пожалуйста, данные для автора:
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
В задании предстоит доказать "парадокс дней рождения," который формулируется как вероятность того, что в группе из 23 человек хотя бы у двух совпадет день рождения, составляет около 50.05%. Шаги:
Теперь детально разберем и решим задачу, используя язык Python.
Для симуляции 23 дней рождений будем использовать генератор случайных чисел.
import random
# Функция генерации случайных дней рождения
def generate_birthdays(num_people):
return [random.randint(0, 365) for _ in range(num_people)]
Создадим функцию, которая проверяет, совпадают ли дни рождения хотя бы у двух человек.
# Функция, определяющая, есть ли совпадения
def has_duplicates(birthdays):
return len(birthdays) != len(set(birthdays))
Запустим симуляции для 1000, 10000 и 100000 циклов:
def monte_carlo_simulation(num_people, num_simulations):
success_count = 0
for _ in range(num_simulations):
birthdays = generate_birthdays(num_people)
if has_duplicates(birthdays):
success_count += 1
return success_count / num_simulations
num_people = 23
simulations = [1000, 10000, 100000] # Число симуляций
for num_simulation in simulations:
probability = monte_carlo_simulation(num_people, num_simulation)
print(f'Вероятность совпадения дней рождения для {num_simulation} симуляций: {probability:.5f}')
Используем библиотеку matplotlib для построения графика вероятности от числа циклов.
import matplotlib.pyplot as plt
# Данные для графика
cycles = [1000, 10000, 100000]
probabilities = [monte_carlo_simulation(num_people, cycle) for cycle in cycles]
# Построение графика
plt.plot(cycles, probabilities, marker='o')
plt.xscale('log')
plt.xlabel('Число циклов (логарифмическая шкала)')
plt.ylabel('Вероятность совпадения')
plt.title('График зависимости вероятности от числа циклов')
plt.show()
Таким образом, с помощью метода Монте-Карло мы можем оценить вероятность совпадения дней рождения в группе людей.