El Método Congruencial Lineal Mixto es el más utilizado en simulación en computadoras digitales y esta basado en una relación de recurrencia que ademas utiliza el operador MOD.
El objetivo de los GCL es generar un valor aleatorio a partir de otro anterior
El GCL Mixto esta definido como:
Donde:
Xo : Semilla del generador Xo > 0
a: Constante multiplicativa a>0
c: Constante aditiva c>0
m: modulo m>a; m>Xo ; m>c
La suma (a*Xo+c) será dividida por «m» y «Xn+1» será el residuo de la división
Xn : es el valor base anterior
Xn+1 : es el nuevo valor uniforme entero
rn : es el número aleatorio normalizado
GENERADOR UNIX
El Sistema Operativo UNIX soporta el siguiente GCL mixto:
Implementado este en lenguaje java tenemos
import java.math.*; /** * @web http://jc-mouse.net/ * @author Mouse */ public class Unix { // parametros del generador private BigInteger xn=new BigInteger("0"); //semilla private final BigInteger a = new BigInteger("1103515245"); //Multiplicador private final BigInteger m = new BigInteger("2").pow(32); //Modulo private final BigInteger c = new BigInteger("12345"); //Constante aditiva private int precision = 5;//cantidad de digitos despues del punto decimal /** Constructor de clase */ public Unix(){} public BigInteger getXn() { return xn; } public void setXn(BigInteger xn) { this.xn = xn; } public int getPrecision() { return precision; } public void setPrecision(int precision) { this.precision = precision; } /** * Metodo que obtiene un numero aleatorio entre 0 y 1 * * @param No existe parametros de entrada * @return El numero aleatorio estandar */ public BigDecimal next() { //xn = (a * xn + c) % m ; xn = ((xn.multiply(a)).add(c)).mod(m); BigDecimal x = new BigDecimal( xn.floatValue() / m.floatValue() ).setScale( precision, BigDecimal.ROUND_HALF_UP); return x; } }
Realizando un test para un valor semilla Xo de 111 para una cantidad de 100 números aleatorios tenemos:
Unix unix = new Unix(); unix.setXn( new BigInteger( "111" ) ); unix.setPrecision( 5 ); for( int i=1 ; i<=100 ; i++){ System.out.println( unix.next() ); }
enjoy!!! 🙂
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Acierta los colores o Adivina los colores es un sencillo juego que consiste en que dado 6 colores «rojo», «verde», «salm...
Dando respuesta a una interrogante sobre el como crear objetos en tiempo de ejecución y como manipular estos, desarrolle...
EL patrón MVC (Model, View, Controller) o Modelo, Vista Controlador, es un tipo de diseño que separa en capas bien defin...
¿Que es y para que sirve una imagen forense? Una imagen forense es un «clon» (copia bit a bit) de algún dispositivo como...
Si necesitamos mostrar gráficos estadísticos en nuestras aplicaciones android, contamos con muchas librerías disponibles...
Los smartphone al no tener los típicos botones de los celulares, su pantalla es sensible al movimiento, esto se llama «t...
Los comentarios estan cerrados
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
EXCELENTE HERMANO!! VAMOS GANANDOOO SOMOS LOS PRIMEROSSS COLOMBIAAA!!! JEJEJ
Brother excelente trabajo, con esto me doy cuenta que me falta muchísimo por aprender pero estoy trabajando para lograrlo, saludos y continúa haciendo este tipo de tutoriales, te agradezco mucho.
Hola, buenas noches, mi pregunta es: como podria aplicar este codigo en el patron MVC? me seria de mucha ayuda para mi proyecto 🙂 gracias y saludos desde Venezuela
Hola, una pregunta, ya obtuve la contraseña, pero dónde la tengo que ingresar?
ok
muuchas gracias !!! un excelente trabajo, gracias por el aporte 🙂