1
resposta

Algoritmo em C para confirmar o estudo do Dilema das Portas

Para quem quiser testar: A chance de 'manter e ganhar' é 1/2 da chance de 'trocar e ganhar'

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <time.h>

// escolha da porta com prêmio 0, 1 ou 2
np = (int) floor(3.0 * ((double) rand()) / RAND_MAX);

// escolha da porta 0, 1 ou 2
n1 = (int) floor(3 * ((double) rand()) / RAND_MAX);

// escolha do apresentador 0, 1 ou 2    
do {
  n2 = (int) floor(3 * ((double) rand()) / RAND_MAX);
} // porta não pode ter sido escolhida, nem ter o prêmio

while ((n2 == n1) || (n2 == np));

// ficar com a escolha inicial
if (n1 == np) ganha1++;

else perca1++;

// trocar de porta
if ((n1 != 0) && (n2 != 0)) {

  // trocar para a primeira porta
  if (np == 0) ganha2++;
  else perca2++;

  n3 = 0;
} else if ((n1 != 1) && (n2 != 1))

{ // trocar para a segunda porta

  if (np == 1) ganha2++;

  else perca2++;

  n3 = 1;

} else

{ // trocar para a terceira porta 

  if (np == 2) ganha2++;

  else perca2++;

  n3 = 2;

}

// impressão dos resultados

// ficar e ganhar   = ganha1        ficar e perder    = perca1

// trocar e ganhar = ganha2        trocar e perder = perca2

printf("%d %d %d %d %d %d %d %d\n", np, n1, n2, n3, ganha1, perca1, ganha2, perca2);

  }

  ch = getchar(); // pausa

  return 0;
}
1 resposta

Oii, Maurício! Tudo bem?

Peço desculpa pela demora em te responder.

É ótimo ver sua participação no fórum compartilhando seu código. O dilema das portas é um tema fascinante, e dado a sua característica contra-intuitivo, é crucial realizar testes de probabilidade para checar o funcionamento. Por isso, agradeço por trazer essa discussão à tona.

Se me permite, como sugestão, inicialize as variáveis faltantes que são: ganha1, perca1, ganha2, perca2, np, n1, n2 e n3 e coloque o código dentro de uma função main(). Dessa forma, podemos evitar que retorne erros.

Caso tenha interesse, recomendo a formação da Linguagem em C para dar mergulhos mais profundos nessa tecnologia.

Espero ter ajudado. Conte com a Alura para evoluir nos estudos!

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software