Mostrando entradas con la etiqueta probabilidad. Mostrar todas las entradas
Mostrando entradas con la etiqueta probabilidad. Mostrar todas las entradas

miércoles, 3 de septiembre de 2025

Probabilidad con baraja española: manotazo. Solución 3/3 (Matemáticas al rescate)

Todo comienza en un viaje familiar que inicia las vacaciones de verano. Un rato muerto. Una baraja española. Un recuerdo de juego en mi infancia. Y tras ir volteando cartas y diciendo los números consecutivos y "perder" casi todas las veces surge la pregunta: ¿qué probabilidad hay de ganar a este juego?


 Y ya tenemos la chispa encendida. Y siguen un papel y un boli con la probabilidad clásica, combinatoria, árboles y simplificaciones del problema para entender la magnitud real del mismo. Y la magnitud es demasiado grande para mis papeles. ¿Y si cojo el ordenador y programo un poco para contestar a la pregunta? Pero ahí también surgen dificultades.

Pero, como sucede con cierta frecuencia, en el proceso de investigar y buscar estrategias aparecen nuevos conocimientos que acaban hilándose hasta llegar al culmen.

Así que decidí dedicar algunos ratos libres para programar e ir contando en este blog todo de manera gradual y por fascículos.

Y antes de introducir el problema "grande" escribí esta entrada con un problema de urnas y bolas; y en esta otra entrada la solución (con la inesperada visita del número e). Intercalé esta entrada sobre el subfactorial y los desarreglos, que "casualidades de la vida" se utilizaban en la solución.

Parecía el fin de la cuestión y como quien cambia de tema aparece esta entrada sobre los polinomios de Laguerre y cómo calcularlos con Python y wxMaxima.

Y ahora sí, llega el problema original con la baraja de cartas. Enunciado en esta entrada, y primera solución es esta otra entrada. Pero nos encontramos con un problema de tiempos razonables de ejecución así que en esta nueva entrada cuento cómo hacer una aproximación empírica a la solución del problema.

Pero queda la traca final que pone fin a esta serie de entradas, como ya se ha puesto fin a la vacaciones de verano.

Resulta que existe una fórmula para calcular una generalización de los desarreglos cuando tenemos elementos que se repiten.

Teniendo r elementos diferentes, el primero que se repite n1 veces, el segundo n2 veces y así sucesivamente, el número de desarreglos viene dado por: 

Donde Pn_i es el polinomio de Laguerre de grado n_i. (Fuente

Por ejemplo, en una situación con 3 elementos que se repiten 1, 5 y 7 veces respectivamente, dentro de la integral definida tendremos (además de la exponencial de -x) los polinomios de Laguerre de grado 1, de grado 5 y de grado 7.

Por tanto, en nuestro problema original (13 números repetidos 4 veces), dentro de la integral tendremos 13 veces el polinomio de Laguerre de grado 4 (y la exponencial). Así que resolviendo esa integral podemos obtener la solución del problema.

En wxMaxima es muy sencillo y rápido (código en github):

Y la implementación en Python puede encontrarse también en mi repositorio de Matemática Recreativa de Github (ver código).

Con un tiempo de ejecución muy pequeño tenemos la respuesta al problema: la probabilidad de ganar en las condiciones planteadas es de aproximadamente 1,62%.

Recordad que con la estrategia de simulación empírica obtuvimos aproximadamente 1,63%. En este caso no necesitamos simulaciones, porque las Matemáticas tienen una manera relativamente sencilla de calcularlo, pero cabe destacar que la aproximación realizada es bastante buena.

¿Quién me iba a decir en casa de mi familiar cuando estaba jugando con la baraja española que acabaría utilizando integrales definidas con polinomios de Laguerre para contestar a mi pregunta sobre la probabilidad de ganar en el juego?

Pero una cosa sí que tengo constatada, cuando se dispone de tiempo libre siempre surgen buenas ideas. La rutina diaria y el ritmo de vida acelerado nos bloquean la creatividad. 

 

domingo, 24 de agosto de 2025

Probabilidad con baraja española: manotazo. Solución 2/3 (simulaciones)

 

En una entrada anterior planteé una cuestión de probabilidad en un juego de cartas con la baraja española.

Se resolvió el problema en esta entrada utilizando una estrategia exhaustiva: crear todas las permutaciones posibles y comprobar en cada una de ellas si se gana o se pierde el juego.

El problema de dicha resolución es el tiempo de ejecución de crear y recorrer  92.024.242.230.271.040.357.108.320.801.872.044.844.750.000.000.000 barajas (ordenamientos de cartas) diferentes.

Así que en esta ocasión vamos a afrontar el problema con otra estrategia: simular un número grande de partidas para calcular la frecuencia relativa de victorias. Esta estrategia en algunos ámbitos se conoce como el Método de Montecarlo, pero en nuestro caso podemos simplificar mucho su fundamento como una aplicación de la Ley de los Grandes Números en un experimento de Bernoulli.

 

Imagen creada con IA

 Resumen resumido: si repetimos muuuuchas veces un experimento, la frecuencia relativa de éxito tiende a la probabilidad teórica del suceso.

Así que he creado un programa en Python (ver código) que simula jugar tantas partidas como le indiquemos.

En la estrategia exhaustiva se calculó un ejemplo:

... con un mazo de cartas de 4 números y 4 palos (16 cartas), el número de permutaciones es 63.063.000 (fórmula de las permutaciones con elementos repetidos) y la probabilidad de ganar el juego es aproximadamente 0.011869416297987727 (~1,19%). 

Así que ejecutamos el nuevo código con 4 números y 4 palos e indicamos que queremos que simule 5.000.000 de partidas. Tan sólo 12 segundos más tarde en mi ordenador tengo los resultados:

Se ha ganado el juego 59311 veces de un total de 5000000 partidas.
Porcentaje de éxito: 1.18622 % 

Observamos que es una magnífica aproximación a la probabilidad real calculada con la estrategia exhaustiva.

Vamos entonces a simular el problema original de 13 cartas y 4 palos. Le indicamos que simule 5.000.000 de partidas y los resultados obtenidos en 37 segundos son:

Se ha ganado el juego 81267 veces de un total de 5000000 partidas.
Porcentaje de éxito: 1.62534 %
Pues ya tenemos una aproximación a la solución del problema original. La probabilidad de ganar el juego en las condiciones planteadas es aproximadamente 1,63%.

Subimos el número de partidas simuladas a 10.000.000:

Se ha ganado el juego 162883 veces de un total de 10000000 partidas.
Porcentaje de éxito: 1.62883 % 
Para la precisión que buscamos no varía significativamente. Por lo que nos damos ya por satisfechos con la aproximación de la solución obtenida.

Esta estrategia es estupenda cuando es muy complejo o costoso calcular las soluciones reales, o cuando es suficiente encontrar una aproximación empírica a la solución.

Pero en el problema que nos ocupa, ¿y si subimos la apuesta y encontramos otra manera de solucionar el problema?

Esa será la próxima entrada del blog 😉

martes, 19 de agosto de 2025

Probabilidad con baraja española: manotazo. Solución 1/3 (exhaustiva)

En la entrada anterior planteé una cuestión de probabilidad en un juego de cartas con la baraja española.


¿Cuál es la probabilidad de ganar el juego sin que haya coincidido ninguna vez la carta destapada con el número cantado? 

O su complementario, ¿cuál es la probabilidad de "perder"? Entendemos perder en este contexto como que coincida en algún momento la carta destapada con el número cantado.

Una posible idea es utilizar la estrategia exhaustiva: construir TODAS las posibles barajas (ordenamientos de cartas) y comprobar en cuántas de ellas se gana/pierde el juego. A mano está claro que no lo vamos a hacer, pero ¿podemos hacer un programa que realice esa tarea por nosotros?

He realizado un programa en Python que implementa esta estrategia exhaustiva (ver código).

Por ejemplo, con un mazo de cartas de 4 números y 4 palos (16 cartas), el número de permutaciones es 63.063.000 (fórmula de las permutaciones con elementos repetidos) y la probabilidad de ganar el juego es aproximadamente 0.011869416297987727 (~1,19%). Para crear y recorrer todas las barajas posibles, mi ordenador ha tardado algo menos de 4 minutos y medio.

El problema viene cuando ponemos las condiciones del problema: 13 números y 4 palos. El número de permutaciones (barajas distintas) es:

 92.024.242.230.271.040.357.108.320.801.872.044.844.750.000.000.000

Y, claro, va a llevar muuuuuucho más tiempo llegar a la solución de esa manera.

Así que, una vez más, aunque tengamos un algoritmo que resuelve el problema, la realidad con un ordenador medio es que no es factible llegar a la solución en un tiempo razonable.

¿Habrá alguna estrategia alternativa? A seguir pensando...

 

PD: La librería itertools de Python tiene una función para calcular todas las variaciones de un conjunto, pero no tiene ninguna para hacer lo propio con multiconjuntos (elementos que se repiten). Por ello se ha implementado la función permutaciones_repeticion dentro del programa para evitar repetir ordenamientos ya contados.


 

lunes, 18 de agosto de 2025

Probabilidad en juego con baraja española: manotazo

Hay un juego con la baraja española conocido popularmente como manotazo (dependiendo de la zona lo llaman diferente). Las reglas del juego son las siguientes:

  • Se barajan las cartas y se reparten todas entre el total de jugadores. Las cartas no pueden mirarse.
  • En orden, cada jugador canta el siguiente número (1, 2, 3, ...) a la vez que pone una carta boca arriba sobre la mesa, amontonándolas.
  • Cuando se llega al último número (puede ser 10, 12, 13, dependiendo de la baraja que se utilice) se vuelve a empezar la secuencia (1, 2, ...).
  • Si en algún momento coincide el número cantado con el número de la carta todos los jugadores deben poner su mano sobre el montón de cartas. El último jugador en poner la mano se lleva todas las cartas de la mesa.
  • Gana el primer jugador que logra quedarse sin cartas en la mano.


Siguiendo esas reglas, ¿es fácil o difícil que en un mazo de cartas barajadas alguna carta esté en la posición del número que contiene?

Planteado de otra manera. Si jugamos nosotros solos con una baraja de 52 cartas, ¿cuál es la probabilidad de ganar el juego sin que haya coincidido ninguna vez la carta destapada con el número cantado?


viernes, 1 de agosto de 2025

Sacar la bola "n" en la extracción número "n" (soluciones y sorpresa matemática)

En una entrada anterior se planteaba el siguiente problema:

Tenemos una urna con 5 bolas numeradas del 1 al 5. Hay que sacarlas de una en una al azar, sin mirar. Se pierde el juego si sacamos la bola "n" en la extracción número "n".


Abordar dicho problema con un enfoque de probabilidad clásica realizando el diagrama de árbol es factible pero muy tedioso, teniendo en cuenta que con 5 bolas el árbol completo tiene 5! = 120 ramas. En realidad, dicho proceso no dista mucho de calcular todas las permutaciones y comprobar cuáles cumplen las condiciones (método exhaustivo).

Si aumentamos el número de bolas en la urna olvidémonos del método exhaustivo manual. Podemos utilizar programación para que realice dicho método exhaustivo. El problema es el tiempo de computación. Para hacernos una idea, con 13 bolas en la urna tenemos 6.227.020.800 permutaciones diferentes que crear y comprobar si cumplen o no la condición del enunciado (aproximadamente 52 minutos con mi ordenador).

Muchos problemas no tienen mucho interés desde el punto de vista algorítmico-teórico porque es fácil definir el algoritmo que resuelve el problema, pero llevado a la práctica con los ordenadores de los que disponemos actualmente el tiempo de computación de dicho algoritmo puede hacer inviable su resolución en un tiempo "razonable". Y esto obliga a tener que optimizar los algoritmos o buscar alternativas a los mismos.

Volviendo al problema, he creado un programa en Python que resuelve la generalización del problema con N bolas. Como se planteaba al final de la entrada anterior.

He utilizado dos métodos. Empiezo por el segundo, método exhaustivo. Se calculan todas las permutaciones con la librería itertools de Python y se recorren comprobando si cumplen o no la condición de que ninguna bola salga en la posición que indica su número. Para N pequeño (<10) el tiempo de ejecución es razonable, no así conforme se aumenta el número de bolas.

El primer método utilizado es matemáticamente mucho más interesante. Hace uso del concepto de desarreglo, que expliqué en la entrada anterior.

No es difícil ver la relación de los desarreglos con el problema planteado de las bolas numeradas. Que ninguna bola salga en el orden que indica su número equivale a decir que en la permutación del conjunto {1, 2, 3, 4, 5} ningún elemento coincida con su posición original. Por tanto, si calculamos el número de desarreglos del conjunto {1, 2, ..., N} la probabilidad de ganar el juego será: número de desarreglos / permutaciones totales. Es decir, el subfactorial dividido entre el factorial.

p(ganar juego con N bolas) = !N / N! 

Una fórmula muy bonita y computacionalmente mucho más rápida que el método exhaustivo.

Nota: Para calcular el factorial y el subfactorial en Python he utilizado la librería SymPy.

 

En el caso del problema original, N = 5, la probabilidad de ganar es aproximadamente 0.36666666666666664. Por lo que tenemos la probabilidad cuantificada y podemos decir que es más fácil perder el juego que ganarlo.

Además se planteaba la pregunta de si nos parecía lucrativo que nos doblaran la apuesta en caso de ganar, teniendo en cuenta el riesgo que se asume. La respuesta es negativa, dado que a la larga ganaremos aproximadamente un 36'67% de las veces que juguemos y si sólo nos doblan la apuesta lo más probable es acabar perdiendo dinero en dicho juego.

Por último, se planteaba la siguiente pregunta:

Conforme aumentamos el número de bolas, ganar el juego ¿es más fácil, más difícil o va variando?

He creado otro programa en Python que devuelve las probabilidades de ganar el juego variando el número de bolas. El resultado obtenido se recoge en la siguiente tabla: 

N Probabilidad de ganar
2 0.5
3 0.3333333333333333
4 0.375
5 0.36666666666666664
6 0.3680555555555556
7 0.3678571428571429
8 0.36788194444444444
9 0.36787918871252206
10 0.3678794642857143
11 0.3678794392336059
12 0.3678794413212816
13 0.36787944116069116
14 0.3678794411721619
15 0.3678794411713972
16 0.367879441171445
17 0.36787944117144217
18 0.36787944117144233
19 0.36787944117144233
20 0.36787944117144233
21 0.36787944117144233
22 0.36787944117144233
23 0.36787944117144233
24 0.36787944117144233
25 0.36787944117144233
26 0.36787944117144233
27 0.36787944117144233
28 0.36787944117144233
29 0.36787944117144233
30 0.36787944117144233

Vemos que en las primeras N la probabilidad una veces sube y otras baja pero que conforme aumenta N la probabilidad se va estabilizando en torno a un valor: 0.36787944117144233. Podríamos decir que a nivel práctico a partir de 5 bolas la probabilidad de ganar el juego no cambia demasiado.

Y aquí podría acabar esta entrada. Pero las matemáticas están repletas de conexiones sorprendentes y en ocasiones inesperadas. ¿Alguien al leer el problema de las bolas numeradas pensó en el famoso número e?

Pues aquí va su aparición estelar: ese número al cual tiende la probabilidad conforme aumentamos el número de bolas, 0.3678794411714423..., es exactamente el inverso del número e.

1/e =  0.3678794411714423...

Dejo como ejercicio a quien quiera la explicación de este hecho (pista: mirar en la entrada anterior la fórmula del subfactorial).

miércoles, 30 de julio de 2025

Sacar la bola "n" en la extracción número "n" (enunciado y preguntas)

 


Tenemos una urna con 5 bolas numeradas del 1 al 5. Hay que sacarlas de una en una al azar, sin mirar. Se pierde el juego si sacamos la bola "n" en la extracción número "n".

 

Ejemplo de victoria

Primera bola: 2

Segunda bola: 5

Tercera bola: 1

Cuarta bola: 3

Quinta bola: 4 

Ninguna bola se ha extraído en la posición que indica su número. Ganamos el juego.

 

Ejemplo de derrota

Primera bola: 3

Segunda bola: 1

Tercera bola: 5

Cuarta bola: 4

Aquí coincide el número de la bola con la posición en la que se ha extraído. Ya no hace falta seguir. Hemos perdido.

 

Antes de realizar ningún cálculo, contesta a las siguientes preguntas según tu intuición.

- ¿Es fácil ganar el juego?

- Te dicen que si ganas el juego te devuelven el doble de la apuesta realizada. ¿Te parece lucrativo en base al riesgo que asumes?

 

Ahora cuantifica la probabilidad de ganar y vuelve a contestar las preguntas anteriores.

Puedes compartir tu solución en los comentarios.

 

Más preguntas para pensar.

- Generalizar el problema para "n" bolas. 

- Conforme aumentamos el número de bolas, ganar el juego ¿es más fácil, más difícil o va variando?

lunes, 15 de abril de 2013

Probabilidad con 20.000 visitas superadas

Hace medio año que este blog superó las 15.000 visitas y a un ritmo imparable siguen aumentando hasta el punto de que ya hemos superado las 20.000. Muchísimas gracias a todos lo que dais sentido a que escriba.

Voy a aprovechar la ocasión para hacer una propuesta con las estadísticas que muestra Blogger a los administradores de los blogs.

Del total de 20.086 visitas que están contabilizadas en el momento de escribir esta entrada tenemos que:

- Según el país del visitante (top 10):

España 5505
Colombia 2649
México 2215
EEUU 1503
Argentina 1005
Rusia 920
Venezuela 756
Perú 549
Ecuador 532
Chile 419


- Según el sistema utilizado (top 10):


Windows 16301
Linux 1766
Macintosh 724
Android 344
Other Unix 243
iPhone 199
BlackBerry 129
iPad 127
iPod 41
Nokia 20


Alguien se pregunta cuál es la probabilidad de que cogiendo una visita al azar de entre el total (20.086) esta haya sido realizada por un estadounidense que utiliza Linux.

Y ofrece la siguiente respuesta:
p(EEUU y Linux) = p(EEUU) · p(Linux) = (1503/20086) · (1766/20086) = ~0'66%.

¿Qué os parece la respuesta anterior? ¿Qué suposiciones (tanto matemáticas como no) está realizando esa persona en su planteamiento?

miércoles, 21 de noviembre de 2012

Martin y Gala = Martingala. ¿Jugamos a la ruleta? (1ª parte)

Lo que se esconde detrás de la fantasiosa historieta de Martin y Gala es algo mucho más real de lo que puede desprenderse a simple vista del contexto inventado, que para muchos seguramente resulte un contexto demasiado artificial. Recordemos que el cambio de contexto es una posible estrategia que podemos utilizar en la resolución de un problema, cuando este no nos resulta cercano y por tanto nos resulta complicado de entender.

Forma parte de la grandeza y belleza de las matemáticas que resultados que surgen en un contexto resulten válidos y útiles en otros contextos.

En este caso el contexto no lo cambié con el objetivo de resolver el problema, sino con el objetivo de plantear el problema en un contexto "para todos los públicos". Y es que el problema original que quería abordar es el análisis de un método de juego para la ruleta. En según qué circunstancias plantear un problema de juegos de azar puede estar mal visto, sin embargo plantear una historia de guardianes de clubs secretos no.


El método de juego que quería analizar me lo contaron hace algún tiempo y la verdad es que tal y como me lo plantearon parecía una buena estrategia de juego. Hace poco, buceando en Internet, me reencontré con ella y supe que se conoce con el nombre de Martingala (de ahí el nombre del guardián Martin y del club Gala de mi historieta inventada).

En Internet podéis encontrar infinidad de páginas que explican dicho método de juego para la ruleta. Lo resumiré de la siguiente manera:
1. Empiezas apostando 1€ a un color (rojo o negro).
2. Si ganas, te llevas 1€ de ganancia y vuelves a empezar.
Si pierdes, apuestas el doble (2€) al mismo color.
3. Si ganas, te llevas 1€ de ganancia (te dan 4€ y habías apostado 1€+2€) y vuelves a empezar.
Si pierdes, apuestas el doble (4€) al mismo color.
... y así sucesivamente ...

Es decir, que pase lo que pase, con "la martigala" (como se la conoce entre los jugadores) al final te llevas 1€ cada vez que aciertas el color, recuperando las pérdidas que hayas podido acumular con los fallos previos.

¿A qué esperamos? ¡Vamos corriendo a reventar los casinos!
Un momento, no nos ceguemos con la fortuna que pensamos que obtendremos y vamos a analizarlo con un poco más de calma. Y como siempre, para ello utilizamos las matemáticas.

Algunas cuestiones previas a tener en cuenta:

- ¿Cuánto dinero necesito tener como fondo para aguantar una mala racha de resultados? (¿Os acordáis del nombre de la moneda de Martin?) O planteado de otra manera, con el dinero que tengo para apostar, que no es ilimitado, ¿cuán larga es la racha máxima que puedo soportar sin perderlo todo?
Supongamos que tengo 600€ para apostar. Empiezo por ejemplo apostando al rojo y salen 8 negros seguidos. La primera apuesta es de 1€ (2⁰), la segunda 2€ (2¹), la tercera 4€ (2³), ..., la octava 128€ (2⁷) y para jugar la novena debo poner sobre la mesa 256€ (más todo lo que he puesto ya y he perdido, 255€). Si sale rojo recuperaré lo perdido y tendré ¡1€ de ganancia!. Si sale otra vez negro, lo perderé todo porque no tengo más fondo para seguir doblando la apuesta.

- Y uno puede pensar: "bueno, pero que salgan 9 negros seguidos es casi imposible, y si aumento mi fondo podré asegurarme contra rachas más largas aún". Sin entrar en que la mayoría de casinos tienen apuestas máximas, lo cierto es que tengas el dinero que tengas, no es ilimitado, aunque es cierto que podrás aguantar rachas más largas. Pero, ¿cuál es la probabilidad de que pierdas tu fondo antes de sacar una ganancia igual a lo que pones en riesgo? Es decir, si mi fondo es de 511€ ((2^10)-1) podré aguantar una racha de 8 fallos, pero al 9 fallo encadenado pierdo los 511€. ¿Qué probabilidad hay de que pierda los 511€ que pongo en juego antes de sacar 511€ de beneficio (ganando 1€ 511 veces)?

- Las ruletas tienen el número 0, que no es ni negro ni rojo, por lo que la probabilidad de los colores no es exactamente del 50%. ¿Influye esto mucho en los resultados de la estrategia? En principio uno puede pensar que le da igual, si sale 0 cuenta como fallo y sigue con el método de doblar la apuesta.


... CONTINUARÁ ...

sábado, 17 de noviembre de 2012

La historieta de Martin y Gala: lo esperado no es tan probable.

Tras contar la historieta de Martin y Gala dediqué dos entradas a mostrar dos posibles resoluciones de la misma: desde un enfoque probabilístico y utilizando una simulación por ordenador. Ambas sendas nos conducían a la solución de que se espera que el invitado tenga que contestar 255 preguntas de Martin antes de poder pasar a Gala.

Pero, ¿existen muchas probabilidades de que sean exactamente 255 preguntas las que conteste y acierte en mi previsión? Y es que, lo esperado no necesariamente coincide con lo más probable. Son conceptos que responden a preguntas diferentes.

Imaginemos un dado trucado de manera que la probabilidad de cada una de sus caras es 1/7, salvo la probabilidad de la cara con un 6 marcado que es igual a 2/7. La esperanza matemática de dicho dado es:
1·(1/7) + 2·(1/7) + 3·(1/7) + 4·(1/7) + 5·(1/7) + 6·(2/7) = 15/7 + 12/7 = 27/7 que redondeando a las centésimas queda 3'86.
Es decir, que si jugamos muchas (pero que muchas) veces, la media de las puntuaciones obtenidas en las tiradas tiende a 3,86. Pero eso no significa que el 4 sea el valor más probable (de hecho en nuestra situación imaginaria el más probable es el 6).

Volvemos a nuestra historia de Martin y Gala. ¿Cuál es la probabilidad de que el invitado tenga que contestar exactamente 255 preguntas antes de pasar a Gala? ¿Cuál es la probabilidad de que el invitado se libre de ese calvario y pueda pasar antes de contestar 255 preguntas?

La situación de la primera pregunta, la probabilidad de contestar exactamente 255 preguntas, se da cuando se pasa a Gala en el juego número 256, por lo que la probabilidad es (con p=(1/2)^8 y q=1-p):
p(contestar exactamente 255 preguntas) = q^255 · p = 0'00143984217604524.

Vemos que la probabilidad de contestar exactamente 255 preguntas es bastante pequeña, no llega ni al 15 .

Y para abordar la segunda pregunta, la probabilidad de tener que contestar menos preguntas, podemos plantearlo de la siguiente manera:
p(contestar menos de 255 preguntas) = p(contestar exactamente 0 preguntas) + p(contestar exactamente 1 pregunta) + ... + p(contestar exactamente 254 preguntas) =
= p + q · p + q^2 · p + ... + q^254 · p = p · (1+q+q^2+...+q^254) = p · (q^255 - 1) / (q - 1) = 1 - q^255 = 0'6314004029324185.


Es decir, hay más de un 63% de probabilidad de que el invitado pase a Gala antes de contestar las 255 preguntas que se espera que conteste.

¿Y la simulación por ordenador qué nos dice? Añadimos unas pocas líneas más (ver código al final de la entrada) y ejecutamos el programa:
Media de preguntas antes de pasar: 255'193
Frecuencia relativa de coincidencia con preguntas esperadas: 0'001457
Frecuencia relativa de menos preguntas de las esperadas: 0'63112

La aproximación que devuelve una simulación de 1.000.000 de repeticiones es bastante buena.


Podemos concluir que lo más probable es que el invitado tenga que contestar menos preguntas de las "esperadas".


//////////////////////////////////////////////////////////////////////////////////////////////////////
Código fuente del programa en C (en negrita lo añadido):

#include < stdlib.h >
#include < iostream >
#include < time.h >
#include < math.h >
 
main()
{
    srand(time(NULL));
    unsigned int puntos=0, aleatorio=0, puntosNecesarios=8;
    unsigned long int preguntas=0, sumaPreguntas=0, vecesSimulacion=1000000;
    unsigned long int preguntasEsperadas=pow(2,puntosNecesarios)-1, coincidePreguntasEsperadas=0, menorPreguntasEsperadas=0;
    for(unsigned int n=0; n < vecesSimulacion; n++)
    {
        puntos=0;
        preguntas=0;
        while(puntos < puntosNecesarios)
        {
            aleatorio=rand()%2;
            if(aleatorio==0)
            {
                puntos=0;
                preguntas++;
            }
            else
            {
                puntos++;
            }
        } //while
        if(preguntas==preguntasEsperadas)
        {
            coincidePreguntasEsperadas++;
        }
        if(preguntas < preguntasEsperadas)
        {
            menorPreguntasEsperadas++;
        }

        sumaPreguntas+=preguntas;
    } //for n
    std::cout < < "Media de preguntas antes de pasar: " < < (float)sumaPreguntas/(float)vecesSimulacion < < std::endl;
    std::cout < < "Frecuencia relativa de coincidencia con preguntas esperadas: " < < (float)coincidePreguntasEsperadas/(float)vecesSimulacion < < std::endl;
    std::cout < < "Frecuencia relativa de menos preguntas de las esperadas: " < < (float)menorPreguntasEsperadas/(float)vecesSimulacion < < std::endl;

    return 0;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////

La historieta de Martin y Gala: simulación por ordenador


En esta entrada voy a plantear una resolución de la historia de Martin y Gala, utilizando una simulación por ordenador. (Entrada relacionada: resolución desde una perspectiva probabilística)

Las simulaciones por ordenador nos permiten realizar modelos de situaciones reales que de otra forma su estudio sería mucho más complejo (o inabordables/ineficientes desde un punto de vista temporal) y actualmente son muy frecuentes en la investigación en matemáticas y en otros campos.

Un ejemplo muy simple de simulación por ordenador es el de repetir una gran cantidad de veces un experimento aleatorio, como el del caso que nos ocupa de la historia de Martin y Gala.

Haciendo un pequeño programa en C (ver código al final de la entrada) podemos simular la historia de Martin y Gala. En menos de 10 segundos en mi ordenador puedo simular 1.000.000 de veces la historia. Es decir, han pasado por delante de Martin 1.000.000 de invitados que han tirado la moneda hasta conseguir los 8 puntos que les exige para poder pasar a Gala. Al final el programa devuelve la media de las preguntas que les ha hecho Martin antes de dejarles pasar.

Estos son los resultados que he obtenido al ejecutar 10 veces el programa:
255'136; 254'823; 255'6; 254'911; 255'42; 255'322; 254'84; 254'616; 254'954; 255'282;

Vemos que los resultados son bastante estables alrededor de 255. Por lo que según estas simulaciones cabe esperar que los invitados tengan que responder 255 preguntas de Martin antes de conseguir los 8 puntos que les permita pasar a Gala.

Una cuestión interesante es que podemos investigar qué pasa con el resultado cuando cambiamos los distintos valores del programa (como el número de simulaciones o los puntos necesarios).

//////////////////////////////////////////////////////////////////////////////////////////////////////
Código fuente del programa en C:
#include < stdlib.h >
#include < iostream >
#include < time.h >

main()
{
    srand(time(NULL));
    unsigned int puntos=0, aleatorio=0, puntosNecesarios=8;
    unsigned long int preguntas=0, sumaPreguntas=0, vecesSimulacion=1000000;
    for(unsigned int n=0; n < vecesSimulacion; n++)
    {
        puntos=0;
        preguntas=0;
        while(puntos < puntosNecesarios)
        {
            aleatorio=rand()%2;
            if(aleatorio==0)
            {
                puntos=0;
                preguntas++;
            }
            else
            {
                puntos++;
            }
        } //while
        sumaPreguntas+=preguntas;
    } //for n
    std::cout < < "Media de preguntas antes de pasar: " < < (float)sumaPreguntas/(float)vecesSimulacion < < std::endl;
    return 0;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////

jueves, 15 de noviembre de 2012

La historieta de Martin y Gala: desde un enfoque probabilístico

En esta entrada voy a plantear una resolución de la historia de Martin y Gala, utilizando un enfoque probabilístico.

Para no hacer tan tedioso el trabajo y la explicación, primero voy a simplificar la situación y reducir el número de puntos necesarios para pasar a Gala a 3.

Así que el invitado comienza a tirar la moneda hasta que obtiene 3 puntos mediante acumulación de la cara +1, es decir obtiene 3 veces consecutivas un +1. Si obtiene la cara x0 tiene que volver a empezar. Diremos que ha acabado "1 juego" cuando pase alguna de las situaciones anteriores.

Así pues, el árbol de probabilidad de 1 juego queda de la siguiente manera:
Siendo la probabilidad de cada una de las ramas 1/2 por ser equiprobables las caras de la moneda.

La probabilidad de que un juego concluya con 3 puntos es (1/2)·(1/2)·(1/2) = 1/8. La probabilidad de que un juego acabe borrando los puntos acumulados y teniendo que contestar una pregunta de Martin es 7/8.

Si ahora lo que hacemos es ir repitiendo juegos (hasta que uno concluya con 3 puntos), la distribución que estamos utilizando es una binomial con probabilidad de éxito 1/8.

¿Cuántas veces se espera en dicha distribución que tenga que jugar hasta tener un éxito? La esperanza de la ditribución B(n,p) es igual a n·p, por lo que el número de veces que tiene que jugar el invitado para que lo que se espere es que pueda pasar a Gala (esperanza igual a 1) sale de la igualdad: 1 = n · 1/8.

Por tanto, se espera que el invitado pase cuando haya jugado 8 veces, es decir, que se espera que haya tenido que contestar 7 preguntas de Martin antes de pasar.

Resulta sencillo ahora hacer la generalización: para pasar a Gala, Martin decide que el invitado debe acumular x puntos.

La probabilidad de concluir un juego acumulando x puntos es (1/2)^x. Por lo que la esperanza de la B(n,(1/2)^x) es igual a n · (1/2)^x. Dicha esperanza es igual a 1 cuando n = 2^x, por lo que se espera que el invitado tenga que contestar (2^x)-1 preguntas de Martin antes de pasar a Gala.

En el caso de la historia inicial, se espera que el invitado conteste 255 preguntas antes de pasar a Gala.


Ver siguiente entrada relacionada con MartinGala.

jueves, 22 de enero de 2009

Probabilidad jugando a la PS2

Publicado originalmente el 13 de agosto de 2008 en mi blog de la Societat Balear de Matemàtiques XEIX.

El domingo pasado nos invitaron a la casa de campo de una amiga y, después del obligatorio baño en la piscina y de haber comido, jugamos un rato al Buzz. El juego viene con 4 mandos pero mi amiga, que ya previó que querríamos jugar más personas, trajo otros 4 mandos más ya que el juego permite jugar hasta 8 personas al mismo tiempo.

Para quien no lo conozca, el videojuego simula el típico concurso de televisión en el que van haciendo preguntas y el concursante que crea conocer la respuesta aprieta el pulsador y responde. Hay diferentes tipos de pruebas, unas restan puntos si te equivocas en la respuesta y otras no.

El caso es que en la mayoría de pruebas lanzan una pregunta y te dan 4 posibles respuestas (sólo una correcta, claro) que se corresponden con los cuatro botones de colores que tiene el mando. En algunas pruebas gana la pregunta el primero que la responde correctamente. Y aquí entra el cálculo de probabilidades. Modelizaremos la situación pensando que todos los concursantes tienen un nivel de conocimientos parecido, leen la pregunta al mismo tiempo y tienen reflejos similares. Si juegan 4 personas podríamos decir que cada uno tiene un 25% de probabilidad de acertar la pregunta. 

Pero si juegan 8 personas en igualdad de condiciones a cada uno le corresponde una probabilidad del 12,5% (tiene que leer la pregunta, leer las respuestas, conocer cuál es la correcta y ser el primero en pulsar el botón correspondiente). Por tanto, si cambiamos la estrategia y lo que hacemos es en cuanto sale la pregunta, sin leerla ni nada, pulsamos uno de los cuatro botones. Como hay una respuesta válida de 4 posibles tendremos una probabilidad del 25% de acertar la pregunta.

Entonces podríamos decir que (jugando con 8 mandos) un mono que apretase los botones al azar tendría más probabilidad de acertar la pregunta que una persona que quiere saber qué le han preguntado e intenta escoger la respuesta que piensa que es correcta. Lo que pasa es que el resto de jugadores se cansan de que aciertes respuestas sin haber dado tiempo a leer nada y todos acaban haciendo lo mismo (de mono)... y así vuelves a tu 12'5% y además nadie se entera de las preguntas del concurso.

La situación se puede complicar todo lo que queramos porque hay diferentes tipos de pruebas y esta estrategia no es tan buena en todas ellas. Por ejemplo hay una prueba en la que se va reduciendo el número de jugadores, otras en las que las respuestas incorrectas restan puntos... Todo un entretenimiento matemático.

¡Ah, por cierto! El videojuego también es entretenido.

lunes, 24 de noviembre de 2008

¿Navaja o anti-navaja?

Publicado originalmente el 10 de enero de 2008 en mi blog de la Societat Balear de Matemàtiques XEIX.

Si me estuviera refiriendo a la navaja como cuchillo de verdad, la respuesta a la pregunta dependería del uso que le vayamos a dar (si es para cortar pan entonces sí y si es para utilizar como arma pues no). Pero no me estoy refiriendo a ésto.

No sé si es porque los guionistas de Hollywood están en huelga o porque desde siempre se han copiado (digamos que se han inspirado en las ideas) unos a otros, pero el hecho es que a varias series de TV he oído hablar de los que se denomina la navaja de Occam.

Resumiendo mucho podemos decir que la navaja de Occam es una teoría que tiene como máximo principio el siguiente: en igualdad de condiciones la posibilidad más sencilla es la más probable. En la Wikipedia podéis encontrar un artículo muy interesante al respecto.

Como podréis leer es una teoría reduccionista y que tiene sus detractores, algunos de los cuales han formulado lo que se denomina una anti-navaja.

Os pongo un ejemplo de un caso que me ocurrió no hace mucho. Me disponía a ir a la universidad y me subí al coche. Todo normal hasta que, una vez sentado y con la llave en el contacto, cuando intentaba arrancar, el coche hacía el típico ruido de "no quiero arrancar" y no arrancaba. ¿Y ésto por qué?

Teoría 1. El coche tiene aproximadamente cinco años y nunca se ha cambiado la batería, así que se ha gastado y por eso no arranca el coche.

Teoría 2. Intentaba arracar el coche con una llave que creía perdida y que encontré dentro del bolsillo de un abrigo después de casi un año (cuando saqué la ropa de invierno del armario). Como tenía miedo de perder la única llave del coche que me quedaba, encargué otra al concesionario donde compré el coche. Resulta que las llaves de ahora llevan un código magnético y por protección cambiaron el código de la llave que me quedaba y de la nueva, de tal manera que la llave que creía perdida se quedó con un código diferente. Y por eso no arranca el coche.

La teoría más simple es la 1. Según la navaja de Occam es la más probable. Sin embargo, la teoría buena fue la 2. Por lo menos me dí cuenta antes de cambiar la batería del coche (que no me hubiera solucionado nada).

Tanto si a uno le gusta la navaja de Occam como si le gustan más las anti-navajas lo que no hay que hacer nunca es asumir que la posibilidad más probable es la única buena.