Paradoxo de Monty Hall
Autor: Danniel | Publicado: 2014-05-23T14:12:00-07:00







O problema de Monty Hall, também conhecido por paradoxo de Monty Hall é um problema matemático e paradoxo que surgiu a partir de um concurso televisivo dos Estados Unidos chamado Let’s Make a Deal, exibido na década de 1970.

O jogo consiste no seguinte: Monty Hall (o apresentador) apresentava 3 portas aos concorrentes, sabendo que atrás de uma delas está um carro (prémio bom) e que as outras têm prêmios de pouco valor.



Na 1ª etapa o concorrente escolhe uma porta (que ainda não é aberta);
De seguida Monty abre uma das outras duas portas que o concorrente não escolheu, sabendo à partida que o carro não se encontra aí;
Agora com duas portas apenas para escolher — pois uma delas já se viu, na 2ª etapa, que não tinha o prêmio — e sabendo que o carro está atrás de uma delas, o concorrente tem que se decidir se permanece com a porta que escolheu no início do jogo e abre-a ou se muda para a outra porta que ainda está fechada para então a abrir.


Qual é a estratégia mais lógica? Ficar com a porta escolhida inicialmente ou mudar de porta? Com qual das duas portas ainda fechadas o concorrente tem mais probabilidades de ganhar? Por quê?

A resposta pode confundir a intuição uma vez que mudar de porta aumenta a probabilidade de sucesso de 1/3 para 2/3.

Contra código não há argumentos, por isso escrevi um algoritmo em um documento HTML para simular os resultados:

&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;body&gt;
  &lt;/body&gt;
  &lt;script&gt;
    function random(valorIni, valorFim) 
    {
      var numRandom;
      do numRandom = Math.random(); while (numRandom == 1);
      return (numRandom * (valorFim - valorIni + 1) + valorIni) | 0;
    }
    
    var 
      porta_premio, 
      primeira_porta, 
      segunda_porta, 
      terceira_porta,
      muda_porta, 
      escolha_final, 
      ganha_premio,
      qtd_vezes_manteve_porta = 0, 
      qtd_vezes_trocou_porta = 0, 
      qtd_vitorias_trocando_porta = 0, 
      qtd_vitorias_mantendo_porta = 0;
    
    function definePortaPremio()
    {
      porta_premio = random(1, 3);
      document.write('Porta do Premio: ' + porta_premio + ', ');
    }
    
    function escolhePrimeiraPorta()
    {
      primeira_porta = random(1, 3);
      document.write('Primeira porta escolhida: ' + primeira_porta + ', ');
    }
    
    function abreSegundaPorta()
    {
      for (var i = 1; i &lt;= 3; i++)
      {
        if (i != primeira_porta &amp;&amp; i != porta_premio)
        {
          segunda_porta = i;
          break;
        }
      }
      document.write('Porta aberta: ' + segunda_porta + ', ');
    }
    
    function escolheMudarOuNaoPorta()
    {
      muda_porta = random(0, 1);
      if (muda_porta)
      {
        qtd_vezes_trocou_porta++;
        document.write('Troca a porta? SIM, ');
        for (var i = 1; i &lt;= 3; i++)
        {
          if (i != primeira_porta &amp;&amp; i != segunda_porta)
          {
            escolha_final = i;
            break;
          }
        }
        ganha_premio = escolha_final == porta_premio;
        if (ganha_premio) qtd_vitorias_trocando_porta++;
      }
      else
      {
        qtd_vezes_manteve_porta++;
        document.write('Troca a porta? NAO, ');
        escolha_final = primeira_porta;
        ganha_premio = escolha_final == porta_premio;
        if (ganha_premio) qtd_vitorias_mantendo_porta++;
      }
      document.write('Escolha final: ' + escolha_final + ', ');
      document.write('Ganhou o premio? ' + (ganha_premio ? 'SIM' : 'NAO') + '&lt;br/&gt;');
    }
    
    document.write('&lt;pre&gt;');
    var qtd_tentativas = 10000;
    for (var i = 1; i &lt;= qtd_tentativas; i++)
    {
      definePortaPremio();
      escolhePrimeiraPorta();
      abreSegundaPorta();
      escolheMudarOuNaoPorta();
    }
    document.write('&lt;/pre&gt;');
    document.write('&lt;hr/&gt;');
    document.write('Quantidade de tentativas: ' + qtd_tentativas + '&lt;br/&gt;');
    document.write
    (
      'Quantidade de vezes que manteve a porta: ' + qtd_vezes_manteve_porta + 
      ', Quantidade de vitorias: ' + qtd_vitorias_mantendo_porta + 
      ', Percentual: ' + parseInt(qtd_vitorias_mantendo_porta * 100 / qtd_vezes_manteve_porta) + 
      '%&lt;br/&gt;'
    );
    document.write
    (
      'Quantidade de vezes que trocou a porta: ' + qtd_vezes_trocou_porta + 
      ', Quantidade de vitorias: ' + qtd_vitorias_trocando_porta + 
      ', Percentual: ' + parseInt(qtd_vitorias_trocando_porta * 100 / qtd_vezes_trocou_porta) + 
      '%&lt;br/&gt;'
    );
  &lt;/script&gt;
&lt;/html&gt;



O resultado do código acima foi

Porta do Premio: 2, Primeira porta escolhida: 1, Porta aberta: 3, Troca a porta? NAO, Escolha final: 1, Ganhou o premio? NAO
Porta do Premio: 2, Primeira porta escolhida: 1, Porta aberta: 3, Troca a porta? SIM, Escolha final: 2, Ganhou o premio? SIM
Porta do Premio: 3, Primeira porta escolhida: 3, Porta aberta: 1, Troca a porta? NAO, Escolha final: 3, Ganhou o premio? SIM
Porta do Premio: 2, Primeira porta escolhida: 1, Porta aberta: 3, Troca a porta? NAO, Escolha final: 1, Ganhou o premio? NAO
Porta do Premio: 2, Primeira porta escolhida: 2, Porta aberta: 1, Troca a porta? NAO, Escolha final: 2, Ganhou o premio? SIM

Quantidade de tentativas: 10000
Quantidade de vezes que manteve a porta: 5012, Quantidade de vitorias: 1624, Percentual: 32%
Quantidade de vezes que trocou a porta: 4988, Quantidade de vitorias: 3300, Percentual: 66%

Hiperbolicamente estrogonófico.

Também criei uma versão para você simular sozinho:

http://somebode.comuf.com/