Está en la página 1de 2

Generadores de Números U(0,1)

La mayoría de los lenguajes de programación tienen incorporada una función para generar
números aleatorios, con distribución uniforme en el intervalo (0,1). Esta función es la base de la
generación de números aleatorios con otras distribuciones. Como en realidad estos números se
generan a partir de una relación de recurrencia puramente determinística, no son números
aleatorios sino determinísticos. Pero, a los fines de la simulación, esto no es importante si parecen
aleatorios. Por eso a estos números se los llama a veces seudoaleatorios.

En el caso de Delphi, se trata de la función random (sin argumentos), la que devuelve números de
tipo real. Si coloca el argumento rango, generará números enteros desde 0 hasta rango-1.

Para inicializar (comenzar) la generación de números, utilice la función randomize (sin


argumentos). Pero si desea una secuencia de números que luego pueda replicar, utilice para
inicializar la función randseed(semilla), donde semilla será el número inicial (de tipo longint, hasta
2147483647) para la secuencia.

Vea la ayuda o lea el manual de su lenguaje sobre la función random y sus relacionadas. Luego:

Haga un programa que publique los números aleatorios del generador de su lenguaje.

Datos de Entrada: Cantidad de números a generar, Opción para grabar los números como archivo
de texto o de otro tipo, Inicializar semilla.

Datos de Salida: Lista de números, o Archivo

________________________________________

Es posible (aunque improbable), que su lenguaje no tenga un generador de números aleatorios.


También es posible que quiera que su trabajo de investigación pueda ser replicado por otras
personas, utilizando otro lenguaje.

En ese caso, no debe preocuparse. Existen generadores portátiles de números aleatorios con
distribución uniforme. Aquí se da uno congruencial mixto y uno congruencial multiplicativo.

________________________________________

Generador Congruencial Mixto

El código en Delphi es:

function aleat:double; {GENERADOR PORTATIL MIXTO de NAYLOR}

const a=129; c=1; modulo=34359738368;

begin

semilla:=((a*semilla +c) mod modulo);

aleat:=semilla/modulo;
end;

________________________________________

Generador Congruencial Multiplicativo

El código en Delphi es

function aleat:double; {GENERADOR PORTATIL MULTIPLICATIVO}

const a=16807; modulo= 2147483647; {modulo es un numero primo}

begin

semilla:=((a*semilla) mod modulo);

aleat:=semilla/modulo;

end;

También podría gustarte