Apagada docs

Aprendiendo a programar el pasado

Herramientas de usuario

Herramientas del sitio


es:basic:qbasic:trespuertas

Juego de las 3 puertas.

En un concurso, el concursante elige una entre tres puertas. El presentador le propone cambiarla por otra. Una de esas dos puertas (la elegida por concursante o la elegida por el presentador) tiene premio.

Este programa comprueba que las posibilidades de ganar, cambiando de puerta, son un 66% (en la puerta elegida por el presentador se acumulan las posibilidades de dos de las tres puertas).

Nota: la lógica detrás de este acertijo lógico es la siguiente:

  • El concursante tiene un 33% de posibilidades de haber elegido la puerta buena, y solo en ese caso el presentador le ofrecería como alternativa una puerta mala, luego hay un 33% de posibidades de ganar no cambiando de puerta.
  • El concursante tiene un 66% de posibilidades de haber elegido la puerta mala, y en este caso el presentador se ve obligado a ofrecerle la puerta buena. Por tanto, hay un 66% de posibilidades de que el concursante gane al cambia rde puerta.

Código para Qbasic / Quickbasic. Puede funcionar en VBA con ligeras modificaciones.

'DECLARE SUB trespuertas ()
'Juego de las 3 puertas.
'Concursante elige 1 de 3 puertas.
'El presentador le propone cambiarla por otra,
'Una de las dos puertas (elegida por concursante o elegida por presentador)
'tiene premio.
'Este programa comprueba que las posibilidades de ganar, cambiando de puerta,
'son un 66% (en la puerta elegida por el presentador se acumulan
'las probabilidades de dos de las tres puertas).
 
trespuertas
 
SUB trespuertas
vecespresentador = 0
vecesconcursante = 0
veces = 0
DO
    buena = INT(RND * 3)
    concursante = INT(RND * 3)
    IF concursante = buena THEN
        'La puerta escogida es la buena
        'Elegir otra al azar  
        IF concursante = 0 THEN
                'concursante: 0 => presentador: 1 o 2
            presentador = INT(RND * 2) + 1
        ELSE
                'concursante: 1 => presentador: 0 o 2
                'concursante: 2 => presentador: 0 o 1
            presentador = (INT(RND * 2) * 2) / concursante
        END IF
    ELSE
        'La puerta escogida NO es la buena.
        'Elegir la puerta buena.
        presentador = buena
    END IF
    IF concursante = buena THEN
        vecesconcursante = vecesconcursante + 1
    ELSE
       vecespresentador = vecespresentador + 1
    END IF
    veces = veces + 1
    PRINT USING "Veces: #,###,### concursante:#,###,### (###.##%) presentador:#,###,### (###.##%)"; veces; vecesconcursante; (100 * vecesconcursante) / veces; vecespresentador; (100 * vecespresentador) / veces
LOOP
END SUB
Este sitio web utiliza cookies. Al utilizar el sitio web, usted acepta almacenar cookies en su computadora. También reconoce que ha leído y entendido nuestra Política de privacidad. Si no está de acuerdo abandone el sitio web.Más información
es/basic/qbasic/trespuertas.txt · Última modificación: 2016/01/12 09:26 por nepenthes