Mostrando entradas con la etiqueta distribución binomial. Mostrar todas las entradas
Mostrando entradas con la etiqueta distribución binomial. Mostrar todas las entradas

sábado, 17 de noviembre de 2012

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.