Sie sind auf Seite 1von 10

Prcticas el curso de Programacin I Prctica 3

En la Facultad de Ciencias de la UNAM



Prctica 3
Fecha de entrega: 26 de Septiembre de 2013

Uso y creacin de objetos: Jugando con probabilidades

Objetivos

1. Utilizar objetos para la solucin de un problema por medio de
programacin.
2. Practicar la forma de crear y manejar objetos.

Actividad Previa

Debers leer las especificaciones de la prctica. Ya que has comprendido el
problema que se plantea identifica los datos que requieres del usuario; como te
puedes dar cuenta, en este caso se pueden pedir todos los datos necesarios al usuario
antes de realizar cualquier otra operacin, y despus calcular los resultados para
mostrar una solucin.

Lista los datos que necesitas del usuario
______________________________
______________________________
______________________________
______________________________
______________________________
______________________________
______________________________

Una metodologa para disear programas sera iniciar identificando lo siguiente:


1. Identificar los objetos principales.
______________________________
______________________________

2. Definir el comportamiento de los objetos.
______________________________
______________________________
______________________________
______________________________



Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM

3. Especificar Escenarios.
Considerando las opciones posibles que puede tomar el usuario durante la ejecucin
del programa, Cules son los casos que se pueden tener? Estos casos se han
descrito como especificacin del problema pero es importante que los tengas bien
claros. Tambin se mencionan los dos casos posibles del resultado al representar el
juego.
______________________________
______________________________
______________________________
______________________________
______________________________


Especificaciones

Se pide realizar un programa que tendr la funcin de una casa de apuestas, para lo
cual se ocuparn algunos conceptos bsicos de probabilidad. El usuario tendr la
opcin de realizar alguno de los siguientes tres juegos: lanzar una moneda, lanzar
un dado o una tmbola, de la cual el mismo usuario indicar la cantidad de bolas
que tiene (el caso de tener dos o seis bolas es similar a la moneda o al dado,
respectivamente). En cualquiera de los tres casos indicar que opcin desea elegir,
por medio de un nmero. Para la moneda 1 2, para el dado de 1 a 6 y para
tmbola de 1 a n, donde n es la cantidad de bolas seleccionadas.

Adicionalmente tendr el usuario la opcin de elegir el nmero de veces que se
repetir la actividad, indicando tambin el nmero de veces que piensa tendr xito.
Por ejemplo, puede simplemente seleccionar realizar el juego una vez y ganar o
perder todo con una sola repeticin, o puede seleccionar ganar dos de tres veces o
incluso una de tres veces, etc. Finalmente el usuario indicar cunto dinero quiere
apostar y su ganancia depender de la probabilidad de que su prediccin sea
correcta.

El programa indicar cunto podra ganar con la apuesta ingresada y en caso de no
ganar perder todo su dinero. La ganancia ser igual al inverso de la probabilidad de
ganar en la apuesta realizada, esto es:

Ej. Apuesta 100 y su probabilidad de ganar es Obtendr 200 si gana
Apuesta 150 y su probabilidad de ganar es Gana 150*4=600
Por esta razn se tiene que calcular la probabilidad de ganar.

Finalmente se realizar el juego mostrando el resultado al usuario. Por medio de un
mtodo aleatorio se definir si se cumple lo que el usuario esperaba. Nota que este
paso es diferente al anterior ya que primero se define la probabilidad de ganar, con
lo que se determina la ganancia de la apuesta y despus se representa el juego donde
podra al final ganar o perder.
Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM

Desarrollo

El problema se puede dividir en adquirir datos y calcular solucin. Por lo que ya
que conoces los datos que se requieren por parte del usuario a lo largo del cdigo,
realiza la forma en que los pediras al inicio del programa.
Un ejemplo de cmo se podra ver el programa al ejecutarse se muestra en la
seccin de Informacin adicional de esta prctica.

publ i c cl ass Apuest as{
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
/ / Pedi r dat os

/ / Cal cul ar sol uci n y most r ar r esul t ados
}
}

NOTA: El usuario le apuesta a dos cantidades, una es la que define como xito en
cada repeticin y la otra es la cantidad de xitos. Por ejemplo, en el caso de los
dados se puede pedir que salga el 5 dos de tres veces, siendo 5 el valor del xito, 2
la cantidad de xitos y 3 la cantidad de intentos.


Ya que cuentas con estos datos puedes definir la probabilidad de xito de una
repeticin, que es simplemente el nmero de xitos entre las posibilidades totales,
esto es:

exito= (1/k) con k =2 para la moneda
k =6 para el dado
k = n definido por el usuario para la tmbola

Con esto debers crear el objeto para el clculo de la probabilidad, el cual necesita
para ser creado la probabilidad de xito de una repeticin y el nmero de
repeticiones, en ese orden (xito, repeticiones).

Se te proporcionar el cdigo de la clase que realiza los clculos ya que puede ser
que an no hayas visto estos temas durante la carrera, esta clase se llama
Probabilidad. Indica cul es la forma correcta de crear un objeto Probabilidad
llamado apuesta (revisar documentacin de la clase en Informacin adicional).
_________________________

Este objeto tiene una funcin llamada binomial (nombre de la funcin de densidad
usada) que recibe como parmetro el entero que representa la cantidad de xitos a la
que apost el usuario (cantidad de 0 a n) y regresa la probabilidad de tener esa
cantidad de xitos.

Cmo se mandara llamar a esa funcin para guardar su valor en una variable real
llamada proba?
Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM

___________________________

Ya que se conoce la probabilidad de que triunfe la apuesta del usuario, a
continuacin se mostrar en pantalla la ganancia en caso de ganar la apuesta:

|
|
.
|

\
|
=
|
|
.
|

\
|
=
proba
apuesta
apuesta
proba
*
1
anancia g

Finalmente se realizar el juego para indicar el resultado al usuario. Para esto se
utilizar la funcin llamada bernoulli(), del objeto nombrado apuesta, la cual recibe
como parmetro la probabilidad de xito que se tiene en una repeticin y regresa un
dato booleano (true, false). Regresa true con una probabilidad igual a la que se tiene
con el nombre exito.

Ej: Si exito = 3, entonces una de cada tres veces que se llame a la funcin, sta regresar True.

NOTA: El valor que recibe la funcin como parmetro es el valor de exito y no la
cantidad de xitos.


Esta funcin simplemente es una repeticin de las n veces que se quiere realizar el
juego, esto es lo que constituye una funcin de densidad Bernoulli, mientras que la
Binomial es la repeticin de n veces la Bernoulli.

Esto quiere decir que por medio de un ciclo se tiene que realizar n veces la funcin
y contar cuntas veces el valor es True, lo que es lo mismo que determinar cuantas
veces se tiene un xito como resultado.

Al finalizar se muestra la cantidad de xitos que se tuvieron y si es igual a la
esperada por el usuario ganar la cantidad que se le indic, en otro caso no ganar
nada.

Como se indic al inicio del desarrollo, en la seccin de Informacin adicional de
esta prctica se encuentra un ejemplo de cmo se podra ver la secuencia del
programa. Esto te puede ayudar a entender algunas descripciones que no hayan
quedado claros en la explicacin.

Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM

Trabajo adicional

Otra tarea que se realiza fcilmente es calcular el valor esperado del ejercicio y
mostrrselo al usuario. Se conoce que el valor esperado de una Bernoulli (E(x)) es:

( ) p n x E * =
con n=repeticiones
p=probabilidad de xito

Por definicin, el valor esperado es

( ) ( )

=
= =
n
i
i x P i x E
0
*
donde P(x=i) es la probabilidad de que x sea igual a i;
la cual se obtiene con la funcin Binomial(i) del
objeto apuesta

Esto es:
( ) ( ) ) ( * ... ) 1 ( * 1 0 * 0 n Binomial n Binomial Binomial x E + + + =

Con esta informacin podrs completar tu programa para que, adems de mostrar la
probabilidad de xito de la apuesta del usuario, muestre cual es el valor esperado
del juego que se piensa realizar.




Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM

Informacin adicional

- A continuacin se muestra una ejecucin del programa. Algo similar a lo que se
espera que puedas obtener como resultado.
En este caso se selecciona jugar un volado con dos tiros o repeticiones.
Se apuesta por el valor 1(slo existe 1 o 2)
Se espera que de las dos repeticiones slo en una de ellas el resultado sea 1.
Se apuestan 100, por lo que en caso de ganar se obtendrn 200.

Los siguientes resultados varan de corrida a corrida. Para este caso de las dos
repeticiones hubo un solo xito, as que el resultado de la apuesta es favorable.




Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM


- Recuerda Compilar la clase Probabilidad que se presenta a continuacin.

-----------------------------------------------------------------------------------------------
/**
* Probabilidad.java
* @author Erick Santillan
* @version Marzo 2010
*/
import java.lang.Math;
public class Probabilidad{
private double exito;
private int repeticiones;

public Probabilidad(double exito, int repeticiones){
this.exito=exito;
this.repeticiones=repeticiones;
}

public double binomial(int cantidad){
double proba=0;
if(cantidad>repeticiones||cantidad<0){
System.out.println("Cantidad de exitos no especificada correctamente");
}else{
double cant1= (double)factorial(repeticiones);
double cant2= (double)factorial(cantidad);
double cant3= (double)factorial(repeticiones-cantidad);
double combinaciones= (cant1/(cant2*cant3));
proba=Math.pow(exito,cantidad);
proba=proba*(Math.pow(1-xito, repeticiones-cantidad));
proba=proba*combinaciones;
}
return proba;
}

public int factorial(int num){
if(num==1||num==0)
return 1;
else
return factorial(num-1)*num;
}

public boolean bernoulli(int apuesta){
double aleatorio = Math.random();
double limiteInf = exito*((double)apuesta-1);
double limiteSup = exito*((double)apuesta);
boolean resultado=false;
if(aleatorio<limiteSup && aleatorio>limiteInf)
resultado=true;
return resultado;
}
}
----------------------------------------------------------------------------------------------------------------------------------

Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM

































Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM

Prcticas el curso de Programacin I Prctica 3
En la Facultad de Ciencias de la UNAM


- Mas informacin sobre estos y otros temas de Probabilidad (como la que se muestra
a continuacin) la podrs encontrar en:
Ross, S. (2010)Introduction to Probability Models. 10
ma
edicin. Elsevier:
Burlington MA.

Variable aleatoria Bernoulli

Suponemos que se realiza un experimento que puede se clasificado como xito o
fracaso. Si x es igual a 1 para el xito, e igual a 0 para el fracaso, entonces la
funcin de densidad es:
( ) | |
( ) | | p X p p
p X p p
= = =
= = =
1 1
1 0 0


Donde p, 1 0 s s p , es la probabilidad que el experimento sea un xito.

Variable aleatoria Binomial

Suponemos que se realizarn n intentos independientes, cada uno con una
probabilidad de xito de p y probabilidad de fracaso de 1-p. Si X representa el
nmero de xitos en los n intentos, entonces se dice que X es una variable aleatoria
Binomial con parmetros (n, p).
La funcin de densidad de una variable aleatoria Binomial con parmetros (n, p) es:

( ) ( )
i n i
p p
p
n
i p

|
|
.
|

\
|
= 1 , i =0,1,,n
Donde
( ) )! ( !
!
i i n
n
i
n

=
|
|
.
|

\
|
es la cantidad de grupos diferentes de i objetos que
pueden ser elegidos de un conjunto de n objetos.

Grfica de la Distribucin Binomial
0
0.05
0.1
0.15
0.2
0.25
0 5 10 15 20 25 30 35 40
p=0.5, n=20 p=0.7, n=20 p=0.5, n=40

Grfica 4.1. Muestra la forma de la variable aleatoria para diferentes parmetros.

Das könnte Ihnen auch gefallen