Roland
Roland личный блог
30 августа 2016, 07:14

Теория вероятности

Давайте разомнемся. Предлагаю решить следующую несложную задачу:

     Допустим, некоему игроку предложили поучаствовать в известном американском телешоу Let’s Make a Deal, которое ведет Монти Холл, и ему необходимо выбрать одну из трех дверей. За двумя дверьми находятся козы, за одной — главный приз, автомобиль, ведущий знает расположение призов. После того, как игрок делает свой выбор, ведущий открывает одну из оставшихся дверей, за которой находится коза, и предлагает игроку изменить свое решение. Стоит ли игроку согласиться или лучше сохранить свой первоначальный выбор?

Вот типичный ход рассуждений: после того, как ведущий открыл одну из дверей и показал козу, игроку остается выбрать между двумя дверями. Машина находится за одной из них, значит, вероятность ее угадать составляет ½. Так что нет разницы — менять свой выбор или нет. И тем не менее, теория вероятностей гласит, что можно увеличить свои шансы на выигрыш, изменив решение. Разберемся, почему это так.

Для этого вернемся на шаг назад. В тот момент, когда мы сделали свой изначальный выбор, мы разделили двери на две части: выбранная нами и две остальные. Очевидно, что вероятность того, что автомобиль прячется за «нашей» дверью, составляет ⅓ — соответственно, автомобиль находится за одной из двух оставшихся дверей с вероятностью ⅔. Когда ведущий показывает, что за одной из этих дверей — коза, получается, что эти ⅔ шанса приходятся на вторую дверь. А это сводит выбор игрока к двум дверям, за одной из которых (изначально выбранной) автомобиль находится с вероятностью ⅓, а за другой — с вероятностью ⅔. Выбор становится очевидным. Что, разумеется, не отменяет того факта, что с самого начала игрок мог выбрать дверь с автомобилем.



А вот обещанный скрипт. Можно просто вставить в файл monty-hall.html и открыть в браузере:

<html>
    <head>
        <script type="text/javascript">
            function getCarDoors()
            {
                var doors = [0, 0, 0];
                var carIn = Math.floor(Math.random() * 3);
                doors[carIn] = 1;
                return doors;
            }

            function game(tries)
            {
                var res =
                {
                    changedAndWon: 0,
                    changedAndLost: 0,
                    keepAndWon: 0,
                    keepAndLost: 0
                };

                for (j = 0; j < tries; j++)
                {
                    var d = getCarDoors();
                    var myChoice = Math.floor(Math.random() * 3);
                    var changeChoice = Math.floor(Math.random() * 2) == 1;
                    var otherOpen;
                    var otherClosed;
                    var opened = false;
                    for (i = 0; i < 3; i++)
                    {
                        if (i != myChoice && d[i] == 0 && !opened)
                        {
                            otherOpen = i;
                            opened = true;
                        }
                        else if (i != myChoice)
                        {
                            otherClosed = i;
                        }
                    }
                    var selected = changeChoice ? otherClosed : myChoice;
                    if (d[selected])
                    {
                        if (changeChoice)
                            res.changedAndWon++;
                        else
                            res.keepAndWon++;
                    }
                    else
                    {
                        if (changeChoice)
                            res.changedAndLost++;
                        else
                            res.keepAndLost++;
                    }
                }
                return res;
            }

            function presentGame(count, divId)
            {
                var res = game(count);
                var changeOkProb = res.changedAndWon / ((res.changedAndLost + res.changedAndWon) > 0 ? (res.changedAndLost + res.changedAndWon) : 1);
                var keepOkProb = res.keepAndWon / ((res.keepAndWon + res.keepAndLost) > 0 ? (res.keepAndWon + res.keepAndLost) : 1);
                var text = "<tr><td>Количество попыток: " + "</td><td><b>" + count + "</b></td></tr>";
                text += "<tr><td>Не изменил решение и выиграл: " + "</td><td>" + res.keepAndWon + "</td></tr>";
                text += "<tr><td>Не изменил решение и проиграл: " + "</td><td>" + res.keepAndLost + "</td></tr>";
                text += "<tr><td>Изменил решение и выиграл: " + "</td><td>" + res.changedAndWon + "</td></tr>";
                text += "<tr><td>Изменил решение и проиграл: " + "</td><td>" + res.changedAndLost + "</td></tr>";
                text += "<tr><td>Вероятность выиграть, при изменении решения: " + "</td><td>" + "<b>" + (Math.round(changeOkProb * 10000) / 100) + "%</b>" + "</td></tr>";
                text += "<tr><td>Вероятность выиграть, без изменения решения: " + "</td><td>" + "<b>" + (Math.round(keepOkProb * 10000) / 100) + "%</b>" + "</td></tr>";
                document.getElementById(divId).innerHTML = "<table>" + text + "</table>";
            }
        </script>
    </head>
    <body>
        <h1>Парадокс Монти Холла</h1>
        Количество попыток:
        <input type="text" value="100" id="tries" />
        <input type="button" value="Запустить"       onClick="presentGame(document.getElementById('tries').value, 'data');" />
        <br />
        <div id="data"></div>
    </body>
</html>
62 Комментария
  • TovaL
    30 августа 2016, 07:18
    без разницы
  • Алекс Себискверадзе
    30 августа 2016, 07:35
    было вероятность 33%, стало 50%.однозначно стоит сохранить выбор!
  • monte_carlo
    30 августа 2016, 07:50
    Был такой фильм — Двадцать одно. Там эту задачу упоминали. Дверь надо менять, потому что при первоначальном выборе скорее всего ошибся (вероятность не угадать = 2/3)
  • Пыльный заяц
    30 августа 2016, 07:57
    Я уже размялся:




    «Представим себе для простоты не 3 двери, а 100. Тогда вероятность выбора двери с выигрышем составит 1/100. Затем убирают 98 дверей и оставляет нашу и еще одну дверь. Первая дверь выбрана с вероятностью 1/100, т.о. на последнюю дверь приходится 1-1/100=99/100 вероятности выигрыша.»

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн