Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Generador de números aleatorios UNIX

Generador de números aleatorios UNIX

Autor jc mouse domingo, marzo 30, 2014

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:

Formula 1

Formula 2

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:

GCL UNIX

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() );
}

Excel GCL

enjoy!!! 🙂

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

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! :)

También Te Podría Interesar

Sumar 2 numeros

Sumar 2 numeros

Una vez que terminamos el obligatorio 🙂 “Hola mundo“, podemos crear aplicaciones un tanto más elaboradas, pe...

Camara de Seguridad por Internet (LiveCam)

Camara de Seguridad por Internet (LiveCam)

Existen muchas camaras de seguridad por internet algunas protegidas por contraseña pero la mayoria no, utilizando el hac...

Evaluar expresiones matemáticas en Java con JavaScript

Evaluar expresiones matemáticas en Java con JavaScript

Java 8 trae consigo una nueva versión del motor de JavaScript llamada Nashorn, este motor introduce mejoras de rendimien...

JSCRUM .:. Gestor de Proyectos

JSCRUM .:. Gestor de Proyectos

¿Qué es SCRUM? SCRUM es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como pu...

Crea un plugin WP con panel de administracion

Crea un plugin WP con panel de administracion

En este post crearemos un plugin para el CMS WordPress el cual comprende el plugin en si, un panel de administración y e...

Mapas interactivos con HTML5 – Parte 1

Mapas interactivos con HTML5 – Parte 1

La tecnología de HTML5 y javascript  nos permite crear gráficos interactivos livianos sin tener que recurrir a flash, el...

6 comentarios en “Generador de números aleatorios UNIX”

  1. NELSON dice:

    EXCELENTE HERMANO!! VAMOS GANANDOOO SOMOS LOS PRIMEROSSS COLOMBIAAA!!! JEJEJ

  2. 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.

  3. Luis Rodriguez dice:

    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

  4. Adan dice:

    Hola, una pregunta, ya obtuve la contraseña, pero dónde la tengo que ingresar?

  5. liz andrea mamani dice:

    muuchas gracias !!! un excelente trabajo, gracias por el aporte 🙂

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Pyodide es un proyecto experimental de Mozilla  que proporciona un intérprete de Python que se ejecuta completamente en...

PicarOS Diego es una distribución GNU/Linux basada en Debian enfocada principalmente en la educación dentro del aula rec...

Windows XP fue lanzado oficialmente el 25 de octubre de 2001, han pasado ya 17 años y 7 meses convirtiendo así a XP uno...

Java proporciona Collection Framework, que define varias clases e interfaces para representar un grupo de objetos como u...

Android Bolivia

MAUS