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!!! 🙂
En esta ocasión aprenderemos a conectaros con una base de datos Oracle desde Laravel. Es un tutorial sencillo y cortito,[...]
Los objetos como JLabel o JButton nos permiten hacer uso de código CSS en su propiedad TEXT, asi podemos adornar el text[...]
En esta tercera parte del tutorial crearemos la interfaz de usuario GUI (VISTA) para el sistema de gestión de stock. Tom[...]
Cuando nos bajamos un proyecto de internet o cuando nos pasan un código de otra pc (que técnicamente viene siendo lo mis[...]
Tenemos un archivo de base de datos Access *.MDB y queremos realizar una consulta con parámetros de búsqueda utilizando[...]
Tink es una biblioteca de cifrado desarrollada por un grupo de criptógrafos e ingenieros de seguridad de Google lanzado[...]