Está en la página 1de 6

METHODS OF PSEUDO RANDOM NUMBER GENERATION

IN JAVA JDK-7
Pal Cevallos1, Ral Llasag2
1

Departamento de Ciencias de la Computacin, Universidad de las Fuerzas Armadas ESPE, Ecuador


pecevallos3@espe.edu.ec
2
Departamento de Ciencias de la Computacin, Universidad de las Fuerzas Armadas ESPE, Ecuador
rhllasag@espe.edu.ec

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

probabilstico de lanzamiento de monedas aplicando nmeros pseudo-aleatorios los cuales


representarn la probabilidad de salir cara o sello segn un modelo establecido.
La estructura de este artculo empezar con el resumen donde se expondr una sntesis del trabajo
realizado. Seguido se abstrae las palabras clave que reflejen el contenido principal del trabajo. A
continuacin se presenta la introduccin donde se explica el objetivo del artculo y los antecedentes
del tema en cuestin. Es necesario a su vez explicar la metodologa a usarse para el desarrollo de la
investigacin y obtencin de resultados. A su vez todos los mtodos aplicados para la
experimentacin los materiales necesarios que permitieron la correcta obtencin de resultados. En la
parte principal del artculo se presenta el diseo e implementacin en la cual est plasmada de forma
resumida la explicacin de todo el trabajo tcnico realizado para finalmente exponer los resultados
obtenidos junto con trabajos relacionados a la temtica del artculo y poder dar conclusiones
derivadas a todo el trabajo realizado y los objetivos planteados.

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

Para el siguiente trabajo se ha necesitado de un computador HP envy dv6, sus especificaciones se


visualizan en la [Tabla 1]. Se ha instalado Java JDK 7 con el entorno de desarrollo libre Netbeans
7.4, que en conjunto con los conocimientos bsicos de Simulacin Digital y Mtodos de Generacin
de Nmeros pseudo-aleatorios se ha llevado a cabo la codificacin de los algoritmos de stos
mtodos para la implementacin experimental.
Nombre del Producto
Microprocesador
Memoria
Unidad multimedia
Tarjeta de red
Energa

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)

Tabla 1: Especificaciones Tcnicas Laptop HP ENVY dv6

3.2.

MTODOS DE GENERACIN DE NMEROS ALEATORIOS

Mtodo de Cuadrados Medios


Este mtodo de generacin de nmeros aleatorios fue creado por Von Neuman y Metropolis [1951].
El funcionamiento de este algoritmo requiere de un nmero inicial llamado semilla el cual debe tener
2n cifras donde n es un nmero mayor a 2, se eleva al cuadrado este nmero y se extrae las 2n
cifras del centro; el primer nmero se determina simplemente anteponiendo 0.. Para obtener los
siguiente nmeros aleatorios se sigue el mismo procedimiento, solo que ahora se eleva al cuadrado
los 2n dgitos del centro que se seleccionaron para obtener el anterior nmero aleatorio. [2]

Algoritmo
1.
2.
3.
4.
5.
6.

Debe existir una semilla de 2n cifras ;


Elevar al cuadrado
De la semilla elevada al cuadrado obtener las 2n cifras centrales
Aadir a la izquierda de la semilla 0. para imprimir un nmero pseudo-aleatorio
Colocar a las 2n cifras centrales como la nueva semilla
Repetir

Mtodo congruencial de Lehmer


El mtodo de Lehmer es uno de los mtodos de generacin de nmeros aleatorios ms utilizado hoy
en da, el cual fue introducido por Lehmer en 1951. Al igual que el mtodo de cuadrados medios
comienza con una valor inicial o semilla que puede tener n cifras y a diferencia del mtodo anterior
depende de una constante c de k cifras. Estos dos valores se multiplican y de este resultado se
separa las k cifras de la izquierda. Posteriormente obtenemos el nmero aleatorio restando las k
cifras separadas del nmero que nos qued Los siguientes valores se obtienen de forma recursiva

Algoritmo
1.
2.
3.
4.
5.
6.

4.

Debe existir una semilla de n cifras


Debe existir un constante de k cifras
Multiplicar semilla por la constante
Del resultado separar las k cifras de la izquierda
Nmero que ser restado del valor que nos ha quedado.
Repetir

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.

Figura 1: Ejercicio Propuesto

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

Tabla 2: Pruebas de Eficiencia


Se puede visualizar el la [Tabla 2] que el mtodo ms eficiente es el de Lehmer, se demora mucho
menos que el propio algoritmo implementado por Java, pero con una consideracin, la de tener una
semilla que supere en ms de una cifra al valor constante. El mtodo menos eficiente es el
Congruencial por la razn de las operaciones que realiza el operador mod (%).
Por otra lado la eficacia de los mtodos ha requerido de mayor anlisis, puesto que inciden muchas
ms variable, la [Tabla 3] describe los resultados obtenidos al realizar una simulacin del juego de la
moneda, en cuyo caso el modelo en el cual se pierde menos dinero o se gane sera el ms eficaz.
Mtodo
Cuadrados Medios
Lehmer
Congruencial

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

Tabla 3: Pruebas de Eficacia


Como se puede visualizar en la [Tabla 3] el mtodo ms eficaz es el Mtodo Congruencial, dado que
en todos los casos de entradas se ha dado una ganancia a favor del jugador. Adems siempre ha
cumplido con todos los lanzamientos deseados, esto se da porque es un mtodo iterativo, en donde
no existe condicin de error.

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.

CONCLUSIONES Y TRABAJO FUTURO

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

[1] Huayta, A. R. (s.f.). Ejercicios Vertor. Obtenido de


http://es.scribd.com/doc/212661218/EJERCICIOS-VERTOR-docx
[2] Vargas, M. J. (Febrero de 2010). Generacin de nmeros Aleatorios para modelos de simulacin.
Obtenido de https://jrvargas.files.wordpress.com/2010/02/guia3_industrial.pdf
[3] Dra. Flores de la Mota, I. (Octubre de 2011). Conceptos Bsicos de Estadstica para Simulacin.
Obtenido de http://www.estadisticafi.unam.mx/cua/idalia.pdf
[4] Rodrguez Torres, F. D. (1991). Tcnicas y modelos de simulacin de sistemas. Instituto
Politcnico Nacional.