|
|||||||
|
|
|
|||||
|
|
|||||||
Calcula la probabilidad de tener x éxitos en n ensayos,
con probabilidad de éxito p.
La variable aleatoria puede tomar los valores x = 0,1,2 .. n.
Ejemplo : Un jugador de pool profesional tiene un rendimiento del 65% por partida.
a ) ¿ Cual es la probabilidad de que en un torneo de 3 partidas gane exactamente 0,1,2,3 partidas ?
class binomial
{
public static void main(String arg[])
{
System.out.println("B(0,3,0.65) : " + binomial(0,3,0.65));
System.out.println("B(1,3,0.65) : " + binomial(1,3,0.65));
System.out.println("B(2,3,0.65) : " + binomial(2,3,0.65));
System.out.println("B(3,3,0.65) : " + binomial(3,3,0.65));
}
public static double binomial(int x, int n, double p)
{
long comb = combinatoria(n,x);
return (double) comb * Math.pow(p,x) * Math.pow(1-p,n-x);
}
public static long combinatoria(int n, int x )
{
int dif, term;
double comb = 1;
dif = Math.max(x , n - x);
term = Math.min(x , n - x);
for (int i = 1; i <= term ; i++)
{
int aux = i + dif;
comb *= (double) ( i + dif ) / i;
}
return (long) comb;
}
}
Bajar archivo
Salida del programa
binomial(0,3,0.65) : 0.04287499999999
binomial(1,3,0.65) : 0.238875
binomial(2,3,0.65) : 0.443625
binomial(3,3,0.65) : 0.274625
b ) Calcular la probabilidad de ganar al menos una partida
1 ) P(x >= 1) : P(x > 0)
2 ) P(x > 0 ) : P(x =
1) + P(x =
2) + P(x =
3)
3 ) P(x > 0) : 1 - P(x <= 0)
4 ) P(x > 0) : 1 - P(x = 0)
Tomando en cuenta la solución 2) podemos plantear un método que realice la sumatoria de la función binomial desde x = xi hasta x = xf
public static double binomialAcum(int xi, int xf, int n, double p)
{
double sum = 0.0;
for(int x = xi; x <= xf; x++)
{
sum += binomial(x,n,p);
}
return sum;
}
Ejercicio : Realizar un programa en java que use los métodos binomial y binomialAcum y
que lea las variables por teclado.
*nota : para leer una variable de tipo double ,se puede aplicar algo similar a la lectura de enteros.
double p; p = Double.parseDouble(in.readLine( ));
Calcula la probabilidad de tener x éxitos en n ensayos , cuando n tiende a infinito.
Criterio
: (n > 15). Igual que la distribución binomial cada éxito tiene probabilidad p.
|
l = np |
En el siguiente programa implementamos dos métodos que nos permiten aplicar el cálculo de probabilidades, mediante valores ingresados por teclado.
import java.io.*;
class poisson
{
public static void main(String arg[ ]) throws IOException
{
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Opciones : ");
System.out.println( );
System.out.println("1 : Evaluar Poisson");
System.out.println("2 : Sumatoria de variables Poisson");
System.out.println( );
System.out.print("Ingrese opcion : ");
int opcion = Integer.parseInt(in.readLine( ));
System.out.println();
double lamda;
switch(opcion)
{
case 1 :
int x;
System.out.print("Ingrese lamda : ");
lamda = Double.parseDouble(in.readLine( ));
System.out.print("Ingrese x : ");
x = Integer.parseInt(in.readLine( ));
System.out.println();
System.out.print("Resultado : ");
System.out.println(fpoisson(lamda,x));
break;
case 2 :
int xi,xf;
System.out.print("Ingrese lamda : ");
lamda = Double.parseDouble(in.readLine( ));
System.out.print("Ingrese x inicial : ");
xi = Integer.parseInt(in.readLine( ));
System.out.print("Ingrese x final : ");
xf = Integer.parseInt(in.readLine( ));
System.out.println();
System.out.print("Resultado : ");
System.out.println(fpoissonAcum(lamda,xi,xf));
break;
}
}
public static double fpoisson(double lamda , int x )
{
double p = Math.pow(lamda,x) / factorial(x);
return p * Math.exp(-lamda);
}
public static double fpoissonAcum(double lamda, int xi, int xf)
{
double s = 0.0;
for(int x = xi; x <= xf; x++)
{
s += fpoisson(lamda,x);
}
return s;
}
public static long factorial(int n)
{
long f = 1;
if(n > 1)
{
while (n > 1)
{
f *= n--;
}
}
return f;
}
}
Bajar archivo
Ejemplo
Un tirador va a realizar 3 tiros al blanco. Este tiene un registro historico de dar en el blanco
de un 48.6%.
a) ¿ Cual es la probabilidad de no dar en el blanco tras los 3 tiros?
b) ¿ Cual es la probabilidad de efectuar al menos 2 tiros justo en el blanco ?
Solución
a) lamda = n * p = 3 * 0.4860 = 1.458 ; x = 0
Sirve para calcular la probabilidad de sacar x elementos de cierta característica, sobre una
muestra aleatoria de n elementos.
La muestra se saca de una población de N elementos, en donde M elementos tienen la característica de la
cual se desea obtener.

public static double hipergeometrica(int x ,int N ,int M ,int n)
{
double p = combinatoria(M,x) / combinatoria(N,n);
return p * combinatoria(N - M,n - x);
}
Ejemplo : Se quiere vender a un comerciante una caja de 30 ampolletas pequeñas.
El vendedor sabe que por problemas de producción la mayoría de las cajas vienen con 4 ampolletas defectuosas.
El comprador está decidido a sacar 10 ampolletas para probarlas.
Las condiciones para comprar la caja es de no encontrar más de una ampolleta defectuosa.
¿ Cual es la probabilidad de no hacer la compra ?
Se quiere la probabilidad de sacar 0 o 1 ampolletas defectuosas entre la muestra de 10 ampolletas.
Por lo tanto :
N : 30 (población)
M : 4 (numero de elementos con la característica defectuosa)
n : 10 (muestra aleatoria)
P(x <= 1) = P(x = 0) + P(x = 1)
Ejercicio : Realizar un programa en Java para leer las variables por teclado, aplicando el método hipergeometrica e implementar el método hipergAcum como en los programas anteriores.