El problema de Monty Hall es un juego de probabilidad. Debe su nombre al presentador de un concurso televisivo estadounidense. ¿En qué consiste el problema? El participante del concurso debe abrir una puerta entre tres. El concursante será premiado con lo que haya detrás de la puerta seleccionada. Se sabe que detrás de una puerta se oculta un automóvil. Detrás de las otras dos puertas hay sendas cabras. Luego de que el participante haya elegido una puerta y comunicado la elección, el presentador (que conoce qué hay detrás de cada puerta), abrirá una de las otras dos dejando ver a una cabra. A continuación, el concursante tiene la opción de cambiar de puerta o mantener su elección. El problema consiste en determinar qué estrategia le conviene seguir al concursante. ¿Debe el participante mantener su elección o modificarla escogiendo la puerta restante? Si bien la respuesta no es tan compleja, el problema genera intenso debate. Puedes corroborarlo presentando el dilema en una reunión de amigos o familiares. ¡Verás la polémica que generas! La propuesta de hoy es determinar qué le conviene al concursante a través de una prueba empírica: una simulación en una base de datos Oracle. El desafío es hacer todo en una sola sentencia SQL: nada de tablas, nada de programas en PL/SQL. Solamente una sentencia SQL. Antes de continuar, quiero contarte que dos veces en mi vida me crucé con el problema de Monty Hall. La primera persona que me lo presentó fue Javier Morales Carrera, autor del libro "Optimización SQL en Oracle". Luego volví a tener noticias del concurso en un libro que recomiendo: "El curioso incidente del perro a medianoche" del escritor británico Mark Haddon. Regresando a nuestro simulador del problema de Monty Hall, el primer planteo es cómo hacer para simular instancias del juego en una sentencia SQL. Podemos utilizar el siguiente "truco" para generar "filas" sin necesidad de disponer de una tabla. Veamos, por ejemplo, cómo hacer para generar diez jugadas: select 'Jugada numero ' || level njugada from dual connect by level / Triunfos x mantener Triunfos x cambiar ------------------- ------------------ 327 673 SQL> / Triunfos x mantener Triunfos x cambiar ------------------- ------------------ 335 665 SQL> Simulación finalizada! Y todo en una sola sentencia SQL! Si algún día tienes la oportunidad de participar en el problema de Monty Hall y deseas incrementar tus chances de ganar el auto, ya sabes qué estrategia seguir! Nos vemos!
↧