Собесов

Crazy Panda — стратегия с бильярдными шарами в двух мешках

Статистика и теорверВероятность и стратегииСредняяJunior

Условие

Вы с другом на прогулке. Ведущий предлагает конкурс: есть закрытая шумоизолированная палатка, в ней два мешка по 100 бильярдных шаров. В первом — шары с номерами на них, во втором — без номеров.

Ваш друг может зайти в палатку и переложить шары из одного мешка в другой (но не выносить и не оставлять снаружи).

После него вы заходите в палатку, и шары внутри каждого мешка перемешиваются. Цель — вытащить из мешка шар с номером. Тащите вслепую (не видите, что в мешке и сколько в нём шаров), вытащить можно только один.

Перед началом вы можете обсудить с другом стратегию. Какую выберете и почему?

Решение

Подход

Ключевая ловушка задачи: «вы не видите, в каком мешке сколько шаров». Поэтому стратегия «друг переложит все номерные в один мешок, а вы пойдёте к нему» не работает — вы не сможете отличить мешки. Палатка одинаковая снаружи; внутри 2 мешка, но какой из них «номерной» — неизвестно.

Значит, выбор мешка случайный (вы наугад выбираете один из двух). Стратегия должна быть симметричной: что бы вы ни вытащили из любого мешка — шанс «нумерованного» должен быть максимальным.

Реализация — анализ

Пусть после действий друга:

  • В мешке X: aa номерных и bb ненумерованных шаров (всего a+ba+b).
  • В мешке Y: 100a100 - a номерных и 100b100 - b ненумерованных (всего 200ab200 - a - b).

Вероятность вытащить номерной (выбираем мешок наугад):

P=12aa+b+12100a200abP = \frac{1}{2} \cdot \frac{a}{a+b} + \frac{1}{2} \cdot \frac{100 - a}{200 - a - b}

При условии, что в каждом мешке должен быть хотя бы один шар (иначе вытащить нельзя — конкурс просто проигран). Значит, a+b1a + b \ge 1 и 200ab1200 - a - b \ge 1.

Оптимальная стратегия — оставить в одном мешке ровно один номерной шар, а в другой переложить всё остальное (все 100 ненумерованных + 99 номерных).

Проверим:

  • Мешок X: 1 номерной, 0 ненумерованных. Вероятность вытащить номерной = 1.
  • Мешок Y: 99 номерных, 100 ненумерованных. Вероятность = 99 / 199.
P=121+1299199=12+99398=199+99398=2983980.7487P = \frac{1}{2} \cdot 1 + \frac{1}{2} \cdot \frac{99}{199} = \frac{1}{2} + \frac{99}{398} = \frac{199 + 99}{398} = \frac{298}{398} \approx 0.7487

Это ≈ 74.87% — почти ¾.

Почему именно эта стратегия оптимальна

Оптимизируем PP по a,ba, b при ограничениях 0a1000 \le a \le 100, 0b1000 \le b \le 100, a+b1a + b \ge 1, a+b199a + b \le 199.

Если в мешке X оставить только номерные (b = 0), то P_X = 1. Потеря — все 100 ненумерованных в Y «портят» дробь 99/199.

Можно ли улучшить? Что если поделить пополам: 50/50 в каждом? Тогда P=12(50/100)+12(50/100)=0.5P = \frac{1}{2}(50/100) + \frac{1}{2}(50/100) = 0.5. Хуже.

А если оставить в X 2 номерных (b = 0)? P_X = 1, P_Y = 98/198. P = 0.5 + 98/396 ≈ 0.7475. Чуть хуже, чем «один номерной».

Интуиция: чем меньше нелюбимых шаров портят «маленький мешок» и чем больше номерных в «большом», тем лучше — но граничное условие «нельзя оставить пустой мешок» заставляет оставить хотя бы один шар. Один номерной в малом мешке — оптимальная граница.

Симуляция (sanity check)

import random
def simulate(a_num, a_unnum, b_num, b_unnum, trials=1_000_000):
    wins = 0
    for _ in range(trials):
        bag = random.choice(["A", "B"])
        if bag == "A":
            num, unnum = a_num, a_unnum
        else:
            num, unnum = b_num, b_unnum
        if num + unnum == 0:
            continue
        wins += random.random() < num / (num + unnum)
    return wins / trials
 
print(simulate(1, 0, 99, 100))   # ~0.7487
print(simulate(50, 50, 50, 50))  # ~0.5

Подводные камни

  1. «Друг скажет, в каком мешке номерные». Не сработает — мешки одинаковые снаружи, перемешиваются после, вы не знаете, какой из них.
  2. Оставить мешок пустым. Запрещено условием — шары нельзя выносить из палатки.
  3. Идея «положить только один тип в один мешок» на 50/50. Это стратегия — но не «оставить только номерные с одной стороны». Оптимум — асимметричное деление: один номерной в один мешок, всё остальное — в другой.
  4. Расчёт P=a/(a+b)P = a / (a+b) без учёта случайного выбора мешка. Забываем фактор 1/2 — получаем 1 вместо 0.7487.
  5. Симметричная игра не равна симметричному раскладу. Симметрия по выбору мешка не означает, что нужно симметрично раскладывать шары.

Эталонный ответ

Стратегия: друг перекладывает шары так, чтобы в одном мешке остался ровно один номерной шар, а все остальные (99 номерных + 100 ненумерованных) — в другом мешке.

Вероятность успеха: P=12+993980.7487P = \frac{1}{2} + \frac{99}{398} \approx 0.7487.

Почему: вы не знаете, какой мешок где, поэтому выбор мешка случайный. Оптимум — сделать в одном мешке шанс 100% (один номерной), а в другом — близкий к 50%. Среднее ≈ 75%.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти