Какова вероятность достать два белых шара из мешка, в котором лежит 3 белых и 3 черных шара
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Вероятность достать два белых шара
Это классическая задача на комбинаторику и теорию вероятностей, которая часто встречается в собеседованиях. Решу её несколькими способами.
Условия задачи
- Всего в мешке: 6 шаров (3 белых + 3 чёрных)
- Нужно найти: вероятность P(два белых шара)
- Предполагаем: вытягиваем шары последовательно БЕЗ возврата
Решение 1: Через условные вероятности
Вероятность того, что первый шар белый: P(B₁) = 3/6 = 1/2
Условная вероятность того, что второй шар белый при условии, что первый белый:
P(B₂|B₁) = 2/5 (осталось 2 белых из 5 оставшихся)
По правилу произведения вероятностей:
P(оба белые) = P(B₁) × P(B₂|B₁) = (3/6) × (2/5) = 1/2 × 2/5 = 2/10 = 1/5 = 0.2
Решение 2: Через комбинации
Общее число способов выбрать 2 шара из 6:
C(6,2) = 6!/(2!×4!) = (6×5)/(2×1) = 15
Число способов выбрать 2 белых шара из 3:
C(3,2) = 3!/(2!×1!) = 3
Вероятность:
P(оба белые) = C(3,2) / C(6,2) = 3/15 = 1/5 = 0.2
Решение 3: Python реализация
import math
from itertools import combinations
# Метод 1: Аналитический расчёт
def probability_both_white_analytical():
# P(1-й белый) × P(2-й белый | 1-й белый)
p_first_white = 3/6
p_second_white_given_first = 2/5
probability = p_first_white * p_second_white_given_first
return probability
print(f"Аналитический метод: {probability_both_white_analytical()}")
# Вывод: 0.2
# Метод 2: Через комбинации
def probability_both_white_combinations():
from math import comb
total_ways = comb(6, 2) # Выбрать 2 из 6
favorable_ways = comb(3, 2) # Выбрать 2 белых из 3
return favorable_ways / total_ways
print(f"Метод комбинаций: {probability_both_white_combinations()}")
# Вывод: 0.2
# Метод 3: Монте-Карло симуляция
import random
def probability_both_white_simulation(n_simulations=100000):
count_both_white = 0
for _ in range(n_simulations):
# Создаём мешок: 0,1,2 - белые, 3,4,5 - чёрные
bag = [0, 1, 2, 3, 4, 5]
# Вытягиваем 2 шара без возврата
sample = random.sample(bag, 2)
# Проверяем, оба ли белые (< 3)
if all(ball < 3 for ball in sample):
count_both_white += 1
return count_both_white / n_simulations
sim_prob = probability_both_white_simulation()
print(f"Монте-Карло симуляция: {sim_prob:.4f}")
# Вывод: примерно 0.2 (с небольшой ошибкой)
Ответ
P(два белых шара) = 1/5 = 0.2 = 20%
Альтернативный сценарий: с возвратом
Если шары возвращаются в мешок после вытягивания (выборка с возвратом):
P(B₁) = 3/6 = 1/2
P(B₂) = 3/6 = 1/2 (независимое событие)
P(оба белые) = 1/2 × 1/2 = 1/4 = 0.25
Практическое применение в Data Science
Эта задача иллюстрирует важные концепции:
1. Условные вероятности (Conditional Probability)
Фундамент для Байесовского подхода и классификации
2. Правило произведения (Multiplication Rule)
P(A и B) = P(A) × P(B|A)
3. Комбинаторика
Используется в:
- Выборке данных
- Кросс-валидации
- Тестировании гипотез
4. Монте-Карло методы
Симуляция — мощный инструмент когда аналитическое решение сложно
Частые ошибки при решении
❌ Ошибка 1: Забыть, что после вытягивания первого шара его не возвращают
- Неправильно: P = (3/6) × (3/6) = 1/4
- Правильно: P = (3/6) × (2/5) = 1/5
❌ Ошибка 2: Не учесть порядок
- Из 6 шаров можно выбрать пару упорядоченно или неупорядоченно
- Для этой задачи порядок не важен, поэтому используем комбинации C(n,k), а не перестановки P(n,k)
Интервью-совет
Когда интервьюер дает такую задачу:
- Уточни условие: с возвратом или без?
- Выбери метод: аналитический, комбинаторный или симуляция
- Реализуй в коде: покажи Python код
- Проверь: убедись что результат логичен (0.2 < 0.25, что правильно)
- Масштабируй: как будет меняться вероятность если изменить количество шаров?