Quando estudamos estatística é muito comum esbarrarmos no problema de Monty Hall. Monty Hall era um programa de TV onde o apresentador oferecia três portas para uma pessoa, atrás de uma delas havia um prêmio e das outras duas alguma coisa desagradável para dar o tom de humor do programa. Aqui no Brasil tinhamos o nosso equivalente apresentado pelo Sérgio Malandra, a Porta dos Desesperados. Aqui temos uma explicação do problema com sua solução:

Apesar da explicação do vídeo e de todas as outras que eu já vi, ainda pode ser um problema muito difícil de abstrair, então para testar a hipótese eu criei um script em R (linguagem de análise estatística que eu estudava na época) para simular o problema conforme as condições acima e realmente os resultados bateram, quando o candidato muda a porta na chance que o apresentador dá as chances de acerto sobem para 2/3. O script está abaixo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
tentativas <- 100000

acertos_sem_troca <- 0

#INDICA QUE APESAR DO APRESENTADOR ABRIR UMA PORTA, ELA NAO TROCA
troca = FALSE

for(i in 1:tentativas) {
  portas <- c(1,2,3)
  
  porta_premiada <- sample(portas, 1, replace = FALSE)
  
  porta_escolhida <- sample(portas, 1, replace = FALSE)
  
  #O apresentador escolhe a porta sem premio e nao escolhida para abrir!
  portas_sem_premio <- portas[portas != porta_premiada]
  portas_spremio_nescolhida <- portas_sem_premio[portas_sem_premio != porta_escolhida]
  
  #Abrindo a Porta (removendo das possiblidades a porta que nao foi escolhida e nao eh a premiada)
  portas <- portas[!portas %in% portas_spremio_nescolhida]
  
  if(troca) {
    #Trocando porta escolhida pela outra porta
    porta_escolhida <- portas[1]
  }
  
  if(porta_escolhida == porta_premiada) {
    acertos_sem_troca = acertos_sem_troca + 1
  }
}

acertos_com_troca <- 0
#INDICA QUE SERA TROCADO
troca = TRUE

for(i in 1:tentativas) {
  portas <- c(1,2,3)
  
  porta_premiada <- sample(portas, 1, replace = FALSE)
  
  porta_escolhida <- sample(portas, 1, replace = FALSE)
  
  #O apresentador escolhe a porta sem premio e nao escolhida para abrir!
  portas_sem_premio <- portas[portas != porta_premiada]
  portas_spremio_nescolhida <- portas_sem_premio[portas_sem_premio != porta_escolhida]
  
  #Abrindo a Porta (removendo das possiblidades a porta que nao foi escolhida e nao eh a premiada)
  portas <- portas[!portas %in% portas_spremio_nescolhida]
  
  if(troca) {
    #Trocando porta escolhida pela outra porta
    porta_escolhida <- portas[1]
  }
  
  if(porta_escolhida == porta_premiada) {
    acertos_com_troca = acertos_com_troca + 1
  }
}