You are on page 1of 6

METHODS OF PSEUDO RANDOM NUMBER GENERATION

IN JAVA JDK-7
Paúl Cevallos1, Raúl Llasag2
1

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

RESUMEN
El presente trabajo compara la eficacia y eficiencia de los métodos de generación de números
pseudo-aleatorios (Cuadrados Medio, Lehmer y Congruencial) con respecto al método congruencial
de Math.random() que implementa Java JDK 7, utilizando un modelo matemático que corresponda a
la simulación propuesta. Además se analiza la independencia probabilística de las series de números
obtenidas.
Palabras Clave
Lehmer, JDK, Cuadrados Medios, independencia probabilística

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.

INTRODUCCIÓN

Los métodos de generación de números pseudo-aleatorios se utilizaron por matemáticos para dar
solución a problemas determinísticos complejos, que sólo podían ser resueltos mediante la aplicación
de métodos numéricos y analíticos usuales. Es así que estos métodos de simulación aleatoria han
probado ser más efectivos para situaciones donde se presente un comportamiento estocástico “que
requiere de algún tipo de muestreo” que en la práctica es casi imposible de hacerlo. Para conseguir
aplicar estos métodos se requiere de la construcción de modelos probabilísticos adecuados al
estudio, que permitan generar resultados análogos al fenómeno real en cuestión mediante la
simulación.
Los generadores de números pseudo-aleatorios son mecanismos para la generación de sucesiones
de números cuya principal características es que son estadísticamente independientes por lo que no
existen repeticiones y deben ser independientes entre sí. Estos números se rigen a modelos de
simulación cuyos métodos deben ser eficientes, reduciendo los tiempos de ejecución y el uso de
memoria utilizada por los computadores.
Para esta investigación se intenta probar la eficiencia y eficacia de los métodos de generación de
números pseudo-aleatorios frente a otros similares mediante la construcción de un modelo que
permita medir el rendimiento de cada uno de los métodos mediante la aplicación de un experimento

random() de Java. 2. METODOLOGÍA En un inicio la Metodología investigativa ha conducido a una introducción en la historia del arte sobre Técnicas y Métodos de Simulación Digital. Para obtener los siguiente números aleatorios se sigue el mismo procedimiento. lo cual ha llevado a la lectura de blogs. Es necesario a su vez explicar la metodología a usarse para el desarrollo de la investigación y obtención de resultados.1. hasta 3.4. En la parte principal del artículo se presenta el diseño e implementación en la cual está plasmada de forma resumida la explicación de todo el trabajo técnico realizado para finalmente exponer los resultados obtenidos junto con trabajos relacionados a la temática del artículo y poder dar conclusiones derivadas a todo el trabajo realizado y los objetivos planteados. La estructura de este artículo empezará con el resumen donde se expondrá una síntesis del trabajo realizado. que en conjunto con los conocimientos básicos de Simulación Digital y Métodos de Generación de Números pseudo-aleatorios se ha llevado a cabo la codificación de los algoritmos de éstos métodos para la implementación experimental.24 GHz. libros y sobre todo a interpretación de código implementado por java. A continuación se presenta la introducción donde se explica el objetivo del artículo y los antecedentes del tema en cuestión. Con un conocimiento más amplio de estos algoritmos una hipótesis fundamentada por un modelo matemático de ejecución pretende ser verificada en base a pruebas de ejecución en tiempo real. Se ha instalado Java JDK 7 con el entorno de desarrollo libre Netbeans 7. MÉTODOS DE GENERACIÓN DE NÚMEROS ALEATORIOS Método de Cuadrados Medios Este método de generación de números aleatorios fue creado por Von Neuman y Metropolis [1951]. solo que ahora se eleva al cuadrado los 2n dígitos del centro que se seleccionaron para obtener el anterior número aleatorio. El funcionamiento de este algoritmo requiere de un número inicial llamado semilla el cual debe tener 2n cifras donde n es un número mayor a 2. Nombre del Producto Microprocesador Memoria Unidad multimedia Tarjeta de red Energía HP ENVY dv6-7280la Intel Core i7-3630QM de tercera generación a 2. A su vez todos los métodos aplicados para la experimentación los materiales necesarios que permitieron la correcta obtención de resultados. HARDWARE Y SOFTWARE Para el siguiente trabajo se ha necesitado de un computador HP envy dv6. sus especificaciones se visualizan en la [Tabla 1]. 3. Seguido se abstrae las palabras clave que reflejen el contenido principal del trabajo.8 Ah (62 Wh) Tabla 1: Especificaciones Técnicas Laptop HP ENVY dv6 3. [2] .utils de la Clase Random y el método Math.”.probabilístico de lanzamiento de monedas aplicando números pseudo-aleatorios los cuales representarán la probabilidad de salir cara o sello según un modelo establecido. se eleva al cuadrado este número y se extrae las 2n cifras del centro. el primer número se determina simplemente anteponiendo “0.2. MATERIALES Y MÉTODOS 3.40 GHz con tecnología 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 Batería de ion de litio de 6 celdas 2.

3. 4. 4. será la semilla y si el jugador pierde o gana dinero. 4. 5.Algoritmo 1. Por lo que lo que las variables a analizar en la eficiencia de un método. Estos dos valores se multiplican y de este resultado se separa las k cifras de la izquierda. Elevar al cuadrado De la semilla elevada al cuadrado obtener las 2n cifras centrales Añadir a la izquierda de la semilla 0. Al igual que el método de cuadrados medios comienza con una valor inicial o semilla que puede tener n cifras y a diferencia del método anterior depende de una constante c de k cifras. ¿ cuánto según el ejercicio propuesto?. para imprimir un número pseudo-aleatorio Colocar a las 2n cifras centrales como la nueva semilla Repetir Método congruencial de Lehmer El método de Lehmer es uno de los métodos de generación de números aleatorios más utilizado hoy en día. 3. 5. 6.5 la moneda cae en sello. 1. Repetir DISEÑO E IMPLEMENTACIÓN Para la codificación de éste ejercicio se ha tomado dos aspectos en consideración para evaluar la eficacia y eficiencia de cada uno de los métodos. Debe existir una semilla de 2n cifras . Si el número pseudo-aleatorio es mayor a 0. Si el número pseudo-aleatorio es menor a 0. 2. RESULTADOS Al analizar la eficiencia del método se ha tomado se ha generado la [Tabla 2] con las respectivas variables a analizar. Posteriormente obtenemos el número aleatorio restando las k cifras separadas del número que nos quedó Los siguientes valores se obtienen de forma recursiva Algoritmo 1. Por otro lado. 2. Figura 1: Ejercicio Propuesto Para esto se ha tomado las siguientes consideraciones de la vida real para el modelo matemático. 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 Número que será restado del valor que nos ha quedado. 2. 5. el cual fue introducido por Lehmer en 1951. 6. . al generar 10 número pseudo-aleatorios. para evaluar la eficiencia de cada método se propone el siguiente ejercicio [Figura 1] con el objetivo de probar en un ambiente real. En el primer caso se propone la (ecuación 1) en donde la variable tiempo de ejecución será analizada para determinar qué método se demora menos en culminar la tarea.5 la moneda cae en cara.

b=7. b=7. b=7. puesto que inciden muchas más variable.X_0=1132 ----- 10 10 3ms Cuadrados Medios 5532 10 3 7ms Lehmer 5532 10 10 1ms Congruencial 10 10 1167ms Math. m=10. b=7. b=7.random() de Java A=1. El método menos eficiente es el Congruencial por la razón de las operaciones que realiza el operador mod (%).X_0=5532 ----- 10 10 2ms Cuadrados Medios 9932 10 10 9ms Lehmer 9932 10 10 2ms Congruencial A=1.X_0=1132 Math. m=10. m=10. Método Cuadrados Medios Lehmer Congruencial Semilla 1132 1132 A=1.X_0=9932 7777 Ganado ($) 10 5 10 Perdido ($) 0 10 0 Lanzamientos 10 6 10 Cuenta ($) 10 -5 10 2 10 3 -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 . en cuyo caso el modelo en el cual se pierde menos dinero o se gane sería el más eficaz. la [Tabla 3] describe los resultados obtenidos al realizar una simulación del juego de la moneda. pero con una consideración.X_0=9932 ----- 10 10 1188ms 10 10 3ms Math. m=10.Método Cuadrados Medios SEMILLAS 1132 Repeticiones 10 Números Aleatorios 6 Tiempo (ms) 10ms Lehmer Congruencial 10 10 10 10 2ms 1267ms Math.X_0=5532 9932 9932 A=1. m=10. m=10. se demora mucho menos que el propio algoritmo implementado por Java.random() de Java Cuadrados Medios 5532 5532 A=1. la de tener una semilla que supere en más de una cifra al valor constante.random() de Java Cuadrados Medios Lehmer Congruencial Math.random() de Java Tabla 2: Pruebas de Eficiencia Se puede visualizar el la [Tabla 2] que el método más eficiente es el de Lehmer.random() de Java Cuadrados Medios Lehmer Congruencial Math. Por otra lado la eficacia de los métodos ha requerido de mayor análisis.random() de Java 1132 A=1. b=7.

Existen grandes posibilidades tanto de ganar como perder. tampoco los pone a prueba en un sistema real.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 0 10 10 Tabla 3: Pruebas de Eficacia Como se puede visualizar en la [Tabla 3] el método más eficaz es el Método Congruencial. 6. El método menos eficiente ha sido el congruencial por el número de operaciones que realiza el operador mod (%) al sacar el residuo de la división. dado que en todos los casos de entradas se ha dado una ganancia a favor del jugador. con un nivel de confianza alfa (α). vamos a trabajar con la semilla 7777.random() de Java Cuadrados Medios Lehmer Congruencial 7777 A=1. en el cual se determina si los números pseudoaleatorios generados son realmente aleatorios o no. TRABAJOS RELACIONADOS En [2] se describe un trabajo muy similar al presente. AGRADECIMIENTOS Expresamos nuestro profundo agradecimiento a la Universidad de las Fuerzas Armadas . en donde no existe condición de error.X_0=7777 6666 6666 A=1. b=7. pero si en un momento nos dicen.ESPE por habernos abierto las puertas de tan noble institución educativa y permitirnos forjarnos como profesionales de la carrera de Ingeniería en Sistemas e Informático y de manera muy especial expresamos nuestra sentida gratitud al Ing. por la razón que es el más eficaz y no tiene condiciones de error. La desventaja de éste artículo es que solo analiza del método de cuadrados medios y no lo compara con otros. En cuanto a trabajos futuros. CONCLUSIONES Y TRABAJO FUTURO Se puede decir que el algoritmo más eficaz es el de Lehmer. donde el algoritmo de Lehmer será implementado para ahorrar tiempo.X_0=6666 Math. puesto que se ejecuta en menor tiempo en el juego planteado. b=7. . Además siempre ha cumplido con todos los lanzamientos deseados. m=10. Diego Marcillo por despertar en nosotros el espíritu investigativo y el desarrollo de nuestro pensamiento lógico y crítico. 7. m=10. Sin embargo su análisis estadístico es muy bueno y ayuda con las características necesarias que debe tener este modelo para obtener los mejores resultados en modelos de simulación. 8. retirémonos porque tiene grandes posibilidades de que perdamos mucho dinero. este análisis será útil para ejercicios prácticos en un futuro. puesto que en los casos de prueba ha ganado en todos los casos. esto se da porque es un método iterativo. donde la posición de la moneda determina si se gana o se pierde dinero los resultados varían mucho.Lehmer Congruencial Math. Por el contrario si nos dicen que trabajaremos con el método congruencial no deberíamos dudar en jugar.

com/doc/212661218/EJERCICIOS-VERTOR-docx [2] Vargas. (Febrero de 2010). Obtenido de http://es. (Octubre de 2011). Conceptos Básicos de Estadística para Simulación.pdf [3] Dra.files. Flores de la Mota.unam.scribd. (1991). Técnicas y modelos de simulación de sistemas. J. Instituto Politécnico Nacional.9.estadisticafi. F.pdf [4] Rodríguez Torres. M.). I. . Ejercicios Vertor.wordpress.com/2010/02/guia3_industrial.mx/cua/idalia.f. Generación de números Aleatorios para modelos de simulación. Obtenido de https://jrvargas. D. Obtenido de http://www. (s. REFERENCIAS BIBLIOGRÁFICAS [1] Huayta. A. R.