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

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.

martes, 13 de noviembre de 2012

La historieta de Martin y Gala


Martin es el guardián de Gala, un club de élite ultra-secreto. Toda persona que quiera entrar un día como invitado en Gala debe poseer una carta de recomendación de algún miembro del club y pasar un rato charlando y jugando con Martin. Para el juego se utiliza una moneda, que los miembros conocen con el nombre de Racha. En una cara de la moneda está escrito +1 (sumar 1 al resultado) y en la otra cara de la moneda está escrito x0 (multiplicar por 0 el resultado). Cada vez que sale la cara x0, además de borrar los puntos acumulados, el invitado debe responder una comprometedora pregunta de Martin. El invitado podrá pasar cuando, empezando con 0 puntos, consiga 8 puntos tirando la moneda. A Martin siempre le gusta preguntar al invitado antes de empezar el juego cuántas preguntas cree que va a tener que contestar antes de pasar a Gala.


Otra versión más general de la historieta:
Dependiendo de su estado de ánimo y de la primera impresión que le cause el invitado, Martin puede variar el número de puntos necesarios para entrar en Gala.


Entradas relacionadas:
- La historieta de Martin y Gala: desde un enfoque probabilístico.
- La historieta de Martin y Gala: simulación por ordenador.
- La historieta de Martin y Gala: lo esperado no es tan probable.
- Martin y Gala = Martingala. ¿Jugamos a la ruleta? (1ª parte).