Рубрики
Без рубрики

Условная вероятность с Python

Исследуйте условную вероятность с программированием Python, решение забавной загадки о количестве мальчиков и девочек в семье.

Автор оригинала: Robin Andrews.

В этом посте мы собираемся исследовать условную вероятность с Python. Вот веселый и потенциально хитрый вопрос о вероятностях:

В семье с двумя детьми, какова вероятность того, что, если хотя бы один Дети – это девушка, обе дети девушки?

Прежде всего, давайте заявим пару предположений, которые не реалистичны в «реальном мире», но которые являются довольно стандартными для вопросов теоретической вероятности.

  1. Есть равный шанс ребенка, будучи мальчиком или девушкой.
  2. Дети являются девочками или мальчиками, исключительно.
  3. Пол второго ребенка не зависит от этого от первого ребенка.
  4. По вероятность В этом контексте я предполагаю следующее определение:

«Ожидаемая доля положительных результатов при повторении наблюдения по большому образцу».

Подумайте о вашем ответе сейчас, затем напишите его.

Python Program показать вероятность двух девушек.

Мы можем исследовать эту ситуацию, симуляция с помощью Python’s Случайные модуль. Код ниже рассчитывает (моделируемующую) экспериментальную вероятность семьи, имеющую две девушки, учитывая, что хотя бы один это девушка.

import random

sample_size = 1000

num_families_at_least_one_girl = 0
num_families_two_girls = 0

for i in range(sample_size):
    first_child = random.choice(["boy", "girl"])
    second_child = random.choice(["boy", "girl"])
    if first_child == "girl" or second_child == "girl":
        num_families_at_least_one_girl += 1
        if first_child == "girl" and second_child == "girl":
            num_families_two_girls += 1

result = round(num_families_two_girls / num_families_at_least_one_girl, 2)
print(f"Out of {sample_size} families sampled, {num_families_at_least_one_girl} have at least one girl.")
print(f"Of these {num_families_two_girls} have two girls.")
print(f"This gives an experimental probability of {result} to two decimal places that,")
print("given at least one child is a girl, both children are girls.")

Образец вывода:

Out of 1000 families sampled, 768 have at least one girl.
Of these 268 have two girls.
This gives an experimental probability of 0.35 to two decimal places that,
given at least one child is a girl, both children are girls.

Этот подход к проблеме соответствует использованию формулы для условной вероятности:

В нашем сценарии это выходит как

Вышеуказанное решение соответствует следующей ситуации:

Вы посещаете большое количество семей. В каждой семье вы проверяете, есть ли два детей. Если нет, вы игнорируете эту семью. Если да, вы проверяете, является ли один из детей девочкой. Если нет, вы игнорируете эту семью. Если да, вы проверяете, являются ли обе детьми девочками.

Однако возможны разные интерпретации.

Очистка двусмысленности

Возможны разные ответы на оригинальный вопрос, в зависимости от того, как мы это интерпретируем, а также на наших предположениях. Одна из наиболее распространенных альтернативных интерпретаций относится к фразе «хотя бы один». Неопределенность возникает, если у нас не ясно, является ли это пол a Конкретный Ребенок, который известен в отличие от того, чтобы знать, что один ребенок – это девушка, но не какая она.

Эта версия соответствует следующей ситуации:

Вы посещаете большое количество семей. В каждой семье вы проверяете, есть ли два детей. Если нет, вы игнорируете эту семью. Если да, вы ждете, пока один из детей не попадет в комнату. Если это мальчик, вы игнорируете эту семью. В противном случае вы проверяете, являются ли обе детьми девочками.

Эта интерпретация эквивалентна другому вопросу:

В семье с двумя детьми, какова вероятность того, что, если Младший ребенок Девушка, обе дети – это девочки?

Здесь формула условной вероятности выглядит так:

Код Python для альтернативной интерпретации проблемы

Вышеуказанный сценарий может быть смоделирован с использованием только слегка модифицированной версии кода Python для первой интерпретации. Обратите внимание, как условные операторы теперь разные, а переменные, представляющие отбор отбора мальчика/девочки, теперь one_child и Other_child Отказ

import random

sample_size = 1000

num_families_at_least_one_girl = 0
num_families_two_girls = 0

for i in range(sample_size):
    one_child = random.choice(["boy", "girl"])
    other_child = random.choice(["boy", "girl"])
    if one_child == "girl":
        num_families_at_least_one_girl += 1
        if one_child == "girl" and other_child == "girl":
            num_families_two_girls += 1

result = round(num_families_two_girls / num_families_at_least_one_girl, 2)
print(f"Out of {sample_size} families sampled, {num_families_at_least_one_girl} have at least one girl.")
print("You know which child this is.")
print(f"Of these families, {num_families_two_girls} have two girls.")
print(f"This gives an experimental probability of {result} to two decimal places that both children are girls.")

Проблема «Две девушки» проблема по вероятности вероятности вызвала много дискуссий между математиками, и является отличным примером того, как может возникнуть путаница из-за нетокопленного определения проблемы. Это также иллюстрирует необходимость определенного интеллектуального смирения. С чрезмерной уверенностью, наши рассуждения могут быть неверными, и даже если это не так, мы могли сделать некоторые предположения, которые не неизбежны.

Этот пост изучил проблему вероятностной вероятности «двух девушек» с использованием программирования Python. Я надеюсь, что вы нашли это интересно и полезно.