Naps Tecnología y educación

Simulación de una distribución discreta usando Java: Distribución binomial

Programa-Java-Binomial

A continuación presentamos una implementación de un método de generación de una distribución discreta, en este caso, veremos la distribución binomial. Deseamos simular un experimento que siga una distribución binomial usando un programa realizado en el lenguaje Java.

Recordemos que un experimento binomial consta de una serie de n ensayos idénticos, donde cada ensayo produce uno de dos resultados (Mendenhall W., Beaver R., Beaver B., 2008). Un ejemplo muy sencillo de un experimento binomial es lanzar una moneda al aire. Si quisiéramos saber la cantidad de “soles” que obtenemos de lanzar al aire una moneda 10 veces, allí tenemos un experimento binomial, donde n=10 (los ensayos) y donde cada ensayo produce uno de dos resultados (águila o sol).

En el ejemplo anterior los “soles” serían nuestro resultado “exitoso” y las águilas el “fracaso”.  Llamaríamos p a la probabilidad de éxito y q a la probabilidad de fracaso. En éste problema en particular p=.50 y q=.50 pues consideramos que existe la misma probabilidad de que caiga sol a que caiga águila, aunque en otros experimentos no necesariamente tiene que ser así.

Veamos ahora el algoritmo que deseamos implementar.

  1. Hacer x=0, i=1.
  2. Si i≤ n ir al paso 3. En caso contrario ir al paso 5.
  3. Generar un número aleatorio ui. Si ui ≤ p, hacer x = x+1.
  4. Hacer i = i+1. Ir al paso 2.
  5. x es el valor generado de la variable X.

 

Veamos ahora la implementación en Java. En nuestro ejemplo deseamos simular una serie de 10 experimentos donde cada experimento consiste en lanzar al aire una moneda 5 veces y contar la cantidad de soles que salen en cada experimento.

public class Mi_binomial {
  public static int getBinomial (int n, double p){
    int x=0;
    int i = 1;
    double ui;
    while (i<=n){
        ui = Math.random();
        if (ui <= p){
          x++;
         }
        i++;
    }
    return x;
  }

  public static void main(String[] args) {
    for (int i=0; i<=10; i++){
       System.out.println(getBinomial(5,0.50));
    }
   }
}

 

En nuestro código creamos una función de tipo entera llamada getBinomial que recibe como parámetros de entrada n que representa en nuestro caso la cantidad de veces que lanzamos al aire la moneda (5 veces), y p que representa la probabilidad de éxito, en nuestro caso sería 0.5. Puedes observar dichos valores en la llamada de la función.

 

Mostramos a continuación una posible salida (en cada corrida los datos serán diferentes):

En este caso observamos que en el primer experimento dice que salieron 3 soles, en el segundo 2 soles, etc. La salida sigue una distribución binomial, pues si contamos los resultados se representarían de la siguiente forma:

Cantidad de soles Número de veces
0 0
1 0
2 3
3 4
4 3
5 0

 

Por lo que si la graficáramos:

En conclusión: Este sencillo ejemplo nos permite acercarnos a la programación de experimentos binomiales. Muchos experimentos prácticos arrojan resultados similares a los de un lanzamiento de una moneda. Podemos utilizar este algoritmo para simular encuestas de preferencias, proporciones de hombres vs mujeres, proporciones de poblaciones con algún gen relacionado con alguna enfermedad, etc., es decir, cualquier tipo de experimento que siga una distribución binomial.

 

Referencias

  1. Mendenhall W., Beaver R., Beaver B. (2008). Introducción a la probabilidad y estadística. 12ª Edición. Ed. Cengage Learning. México.

 

¿Qué te pareció este artículo?
  • Poco informativo ()
  • No era lo que buscaba ()
  • Regular ()
  • Interesante ()
  • Excelente ()
(Visto 7.179 veces)

Tu comentario

opiniones