IN JAVA JDK-7
Pal Cevallos1, Ral Llasag2
1
RESUMEN
El presente trabajo compara la eficacia y eficiencia de los mtodos de generacin de nmeros
pseudo-aleatorios (Cuadrados Medio, Lehmer y Congruencial) con respecto al mtodo congruencial
de Math.random() que implementa Java JDK 7, utilizando un modelo matemtico que corresponda a
la simulacin propuesta. Adems se analiza la independencia probabilstica de las series de nmeros
obtenidas.
Palabras Clave
Lehmer, JDK, Cuadrados Medios, independencia probabilstica
ABSTRACT
This paper compares the effectiveness and efficiency of the methods of generating pseudo-random
numbers (squares across, and Lehmer congruential) regarding congruential
method Math.random () that implements Java JDK 7 using a mathematical
model that corresponds to the given simulation. Furthermore the probabilistic
independence number ranges obtained is analyzed.
KeyWords:
Lehmer, JDK, Square Media, probabilistic independence
1.
INTRODUCCIN
Los mtodos de generacin de nmeros pseudo-aleatorios se utilizaron por matemticos para dar
solucin a problemas determinsticos complejos, que slo podan ser resueltos mediante la aplicacin
de mtodos numricos y analticos usuales. Es as que estos mtodos de simulacin aleatoria han
probado ser ms efectivos para situaciones donde se presente un comportamiento estocstico que
requiere de algn tipo de muestreo que en la prctica es casi imposible de hacerlo. Para conseguir
aplicar estos mtodos se requiere de la construccin de modelos probabilsticos adecuados al
estudio, que permitan generar resultados anlogos al fenmeno real en cuestin mediante la
simulacin.
Los generadores de nmeros pseudo-aleatorios son mecanismos para la generacin de sucesiones
de nmeros cuya principal caractersticas es que son estadsticamente independientes por lo que no
existen repeticiones y deben ser independientes entre s. Estos nmeros se rigen a modelos de
simulacin cuyos mtodos deben ser eficientes, reduciendo los tiempos de ejecucin y el uso de
memoria utilizada por los computadores.
Para esta investigacin se intenta probar la eficiencia y eficacia de los mtodos de generacin de
nmeros pseudo-aleatorios frente a otros similares mediante la construccin de un modelo que
permita medir el rendimiento de cada uno de los mtodos mediante la aplicacin de un experimento
2.
METODOLOGA
En un inicio la Metodologa investigativa ha conducido a una introduccin en la historia del arte sobre
Tcnicas y Mtodos de Simulacin Digital, lo cual ha llevado a la lectura de blogs, libros y sobre
todo a interpretacin de cdigo implementado por java.utils de la Clase Random y el mtodo
Math.random() de Java.
Con un conocimiento ms amplio de estos algoritmos una hiptesis fundamentada por un modelo
matemtico de ejecucin pretende ser verificada en base a pruebas de ejecucin en tiempo real.
3.
MATERIALES Y MTODOS
3.1.
HARDWARE Y SOFTWARE
HP ENVY dv6-7280la
Intel Core i7-3630QM de tercera generacin a 2,24 GHz, hasta 3,40
GHz con tecnologa Turbo Boost
SDRAM DDR3 de 8 GB (2 DIMM)
Blu Ray ODD BDR/RE
LAN Gigabit Ethernet 10/100/1000 (conector RJ-45)
Adaptador de CA de 120 W
Batera de ion de litio de 6 celdas 2,8 Ah (62 Wh)
3.2.
Algoritmo
1.
2.
3.
4.
5.
6.
Algoritmo
1.
2.
3.
4.
5.
6.
4.
DISEO E IMPLEMENTACIN
Para la codificacin de ste ejercicio se ha tomado dos aspectos en consideracin para evaluar la
eficacia y eficiencia de cada uno de los mtodos. En el primer caso se propone la (ecuacin 1) en
donde la variable tiempo de ejecucin ser analizada para determinar qu mtodo se demora
menos en culminar la tarea.
Por otro lado, para evaluar la eficiencia de cada mtodo se propone el siguiente ejercicio [Figura 1]
con el objetivo de probar en un ambiente real.
Para esto se ha tomado las siguientes consideraciones de la vida real para el modelo matemtico.
1.
Si el nmero pseudo-aleatorio es menor a 0.5 la moneda cae en cara.
2.
Si el nmero pseudo-aleatorio es mayor a 0.5 la moneda cae en sello.
Por lo que lo que las variables a analizar en la eficiencia de un mtodo, ser la semilla y si el jugador
pierde o gana dinero, cunto segn el ejercicio propuesto?.
5.
RESULTADOS
Al analizar la eficiencia del mtodo se ha tomado se ha generado la [Tabla 2] con las respectivas
variables a analizar, al generar 10 nmero pseudo-aleatorios.
Mtodo
Cuadrados Medios
SEMILLAS
1132
Repeticiones
10
Nmeros Aleatorios
6
Tiempo (ms)
10ms
Lehmer
Congruencial
10
10
10
10
2ms
1267ms
Math.random() de Java
1132
A=1, b=7,
m=10,X_0=1132
-----
10
10
3ms
Cuadrados Medios
5532
10
7ms
Lehmer
5532
10
10
1ms
Congruencial
10
10
1167ms
Math.random() de Java
A=1, b=7,
m=10,X_0=5532
-----
10
10
2ms
Cuadrados Medios
9932
10
10
9ms
Lehmer
9932
10
10
2ms
Congruencial
A=1, b=7,
m=10,X_0=9932
-----
10
10
1188ms
10
10
3ms
Math.random() de Java
Semilla
1132
1132
A=1, b=7,
m=10,X_0=1132
Math.random() de Java
Cuadrados Medios
Lehmer
Congruencial
Math.random() de Java
Cuadrados Medios
Lehmer
Congruencial
Math.random() de Java
Cuadrados Medios
5532
5532
A=1, b=7,
m=10,X_0=5532
9932
9932
A=1, b=7,
m=10,X_0=9932
7777
Ganado ($)
10
5
10
Perdido ($)
0
10
0
Lanzamientos
10
6
10
Cuenta ($)
10
-5
10
10
-8
3
10
10
0
0
0
3
10
10
3
10
10
7
4
5
10
10
10
10
0
8
5
6
10
-3
-6
-5
10
10
2
0
10
10
3
10
-8
Lehmer
Congruencial
Math.random() de Java
Cuadrados Medios
Lehmer
Congruencial
7777
A=1, b=7,
m=10,X_0=7777
6666
6666
A=1, b=7,
m=10,X_0=6666
Math.random() de Java
2
10
10
0
3
10
-8
10
3
7
10
10
10
0
0
0
4
7
10
10
-7
7
10
10
10
10
10
6.
TRABAJOS RELACIONADOS
En [2] se describe un trabajo muy similar al presente, en el cual se determina si los nmeros pseudoaleatorios generados son realmente aleatorios o no; con un nivel de confianza alfa (), La desventaja
de ste artculo es que solo analiza del mtodo de cuadrados medios y no lo compara con otros,
tampoco los pone a prueba en un sistema real. Sin embargo su anlisis estadstico es muy bueno y
ayuda con las caractersticas necesarias que debe tener este modelo para obtener los mejores
resultados en modelos de simulacin.
7.
Se puede decir que el algoritmo ms eficaz es el de Lehmer, puesto que se ejecuta en menor tiempo
en el juego planteado, donde la posicin de la moneda determina si se gana o se pierde dinero los
resultados varan mucho. El mtodo menos eficiente ha sido el congruencial por el nmero de
operaciones que realiza el operador mod (%) al sacar el residuo de la divisin. Existen grandes
posibilidades tanto de ganar como perder, pero si en un momento nos dicen, vamos a trabajar con la
semilla 7777, retirmonos porque tiene grandes posibilidades de que perdamos mucho dinero. Por el
contrario si nos dicen que trabajaremos con el mtodo congruencial no deberamos dudar en jugar,
puesto que en los casos de prueba ha ganado en todos los casos, por la razn que es el ms eficaz
y no tiene condiciones de error.
En cuanto a trabajos futuros, este anlisis ser til para ejercicios prcticos en un futuro, donde el
algoritmo de Lehmer ser implementado para ahorrar tiempo.
8.
AGRADECIMIENTOS
Expresamos nuestro profundo agradecimiento a la Universidad de las Fuerzas Armadas - ESPE por
habernos abierto las puertas de tan noble institucin educativa y permitirnos forjarnos como
profesionales de la carrera de Ingeniera en Sistemas e Informtico y de manera muy especial
expresamos nuestra sentida gratitud al Ing. Diego Marcillo por despertar en nosotros el espritu
investigativo y el desarrollo de nuestro pensamiento lgico y crtico.
9.
REFERENCIAS BIBLIOGRFICAS