top of page

Level 2

Вход в центральный компьютерный зал

"Wintermute"

В центральный компьютерный зал Wintermute (The Evil Corporation™) - там, где находится их главный сервер - ведут три двери: одна настоящая и две подставные.
Герои могут наугад выбрать одну дверь, после чего появляется Mad Scientist и открывает другую дверь - подставную. После этого, нашим хакерам предоставляется выбор - либо пройти в первую выбранную ими дверь, либо поменять своё решение и пройти в другую дверь, не выбранную прежде.

 

Казалось бы - тот факт, что Mad Scientist открывает ложную дверь никак не может повлиять на решение наших героев. Останутся ли они при своём выборе или поменяют его - как это может изменить вероятность попадания в правильную дверь? Но тут-то и скрывается парадокс! Какой - вы узнаете, решив задачу.

Парадокс этот носит название "Парадокс Монти Холла" в честь ведущего американской телеигры "Let's make a deal". В своё время этот парадокс вызвал целый шквал читательских писем, скандалов и обсуждений. В его честь даже выпускают книги!

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


Рисунок объясняет как происходит выбор дверей:

Как решить задачу ?

Чтобы увеличить вероятность проникновения в компьютерный центр, наши герои разделятся на тех, кто поменяет свой выбор двери, и тех, кто останется при своём.

Для того, чтобы узнать разницу между вероятностями успеха в этих двух случаях, вам надо будет применить так называемый "метод Монте-Карло". Этот метод состоит в том, чтобы огромное число раз протестировать задачу со случайно выбранными условиями и изучить распределение вероятностей.

Например, представим себе, что двери распределились таким (случайным) образом:


Дверь 1: ложная
Дверь 2: ложная
Дверь 3: настоящая.

 

Следующее случайное условие - герои выбирают Дверь 3.


Следующее случайное условие - Mad Scientist выбирает Дверь 1, чтобы предъявить её как ложную.
Теперь у героев есть выбор: если они решают оставить свой первоначальный выбор (Дверь 3) - они выигрывают (в копилку их побед добавляется 1). Если же они решают изменить своё решение и выбрать Дверь 2 (ещё не открытую) - они проигрывают (к их победам ничего не добавляется).

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


Для решения задачи вам надо будет случайным образом сгенерировать по крайней мере десять миллионов (или сколько угодно больше) условий задачи, то есть:

1) двери распределены так-то (определить случайным образом);
2) хакер выбрал такую-то дверь (определить случайным образом);
3) Mad Scientist показал такую-то дверь (определить случайным выбором из двух оставшихся дверей, если они обе ложные, иначе показать единственную оставшуюся ложную дверь).

Затем, основываясь на том, к какой группе вы принадлежите, вам надо будет проверить, угадали вы или нет.

Поделив в конце число побед на общее число проверок (десять миллионов или другое, выбранное вами число), вы узнаете, какова вероятность выиграть в игру Монти Холла для вашей группы.

 

Что вам может понадобиться для решения ?

Для решения этой задачи вам пожет понадобиться понятие списка (list), а также знакомство с логическими (или булевыми) значениями True и False.
Например, список из трёх логических значений может выглядеть так:


doors = [False, False, True]

 

Кроме того, вам надо познакомиться с тем, как импортировать модули в свою программу, потому что для этой задачи будет совершенно необходим модуль random.
Например, следующая строка помогает случайным образом найти целое число в интервале между 0 и 10 (включая оба этих числа):


choice = random.randint(0, 10)

Выбрать случайным образом одну из трёх дверей, можно, например, так:

random_door = doors[random.randint(0, 2)]

а ещё лучше так:

 

random_door = choice(doors)

Ну и, конечно же, вам просто необходимо познакомиться с функциями. Это одно из основных понятий в любом языке программирования, поэтому, пожалуйста, изучите функции очень хорошо! 

 

Как раскрыть пароль ?

Каждый хакер в своём почтовом ящике получит сообщение, которое определит, к какой группе он принадлежит.
После этого, напишите программу, реализующую метод Монте-Карло для вашей группы и посчитайте вероятность вашего выигрыша (в процентах!).
Отбросьте все цифры после запятой (не округляйте!) и полученное целое число процентов и станет вашей частью пароля (так, если у вас получилось 15.823254%, ваша часть пароля - 15).


Пароль будет состоять из частей, раскрытых каждым из хакеров в следующем порядке:
 

Линус + Сатоши Накамото + Тринити + J.F.Sebastian + Дораемон

 

до конца уровня

Теперь, когда вы знаете пароль, можете переходить на

bottom of page