DRAND48(3)

NOMBRE
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - generan números seudo-aleatorios distribuidos uniformemente

SINOPSIS
#include <stdlib.h>

double drand48(void);

double erand48(unsigned short int xsubi[3]);

long int lrand48(void);

long int nrand48(unsigned short int xsubi[3]);

long int mrand48(void);

long int jrand48(unsigned short int xsubi[3]);

void srand48(long int seedval);

unsigned short int *seed48(unsignedshortint seed16v [3]);

void lcong48(unsigned short int param[7]);

DESCRIPCION
Estas funciones generan números seudo-aleatorios usando el algoritmo congruente lineal y artimética de enteros de 48 bits

Las funciones drand48() y erand48() retornan valores punto flotante de doble precisión no negativos uniformemente distribuidos entre [0.0, 1.0).

Las funciones lrand48() y nrand48() retornan enteros largos no negativos distribuidos uniformemente entre 0 y 2^31.

Las funciones mrand48() y jrand48() retornan enteros largos con signo distribuidos uniformemente entre -2^31 y 2^31.

Las funciones srand48(), seed48() y lcong48() son funciones de inicialización, una de ellas debe ser llamada antes de usar drand48(), lrand48() o mrand49(). Las funciones erand48(), nrand48() y jrand48() no requieren que una función de inicialización sea llamada primero.

Todas las funciones trabajan generando una secuencia de enteros de 48 bits, Xi, de acuerdo a la fórmula de congruencia lineal:

    Xn+1 = (aXn + c) mod m, where n >= 0

El parámetro m = 2^48, desde el que la aritmética de 48 bits es realizada. A menos que lcong48() sea llamda, a y c son:

    a = 0x5DEECE66D
    c = 0xB

El valor retornado por cualquiera de las funciones drand48(), erand48(), lrand48(), nrand48(), mrand48() o jrand48() es calculado primero al generar el próximo Xi de 48 bits en la secuencia. Entonces el apropiado número de bits, de acuerdo al tipo de dato a ser retornado, es copiado desde los bits de mayor orden de Xi y transformado en el valor retornado.

Las funciones drand48(), lrand48() y mrand48() guardan el último Xi de 48 bits generado en un buffer interno. Las funciones erand48(), nrand48() y jrand48() requieren del programa llamador la provición de almacenamiento para los sucesivos valores Xi en el argumento cadena xsubi. Las funciones son inicializadas al colocar el valor inicial de Xi en la cadena antes de llamar a la función la primera ves.

La función inicializadora srand48() asigna los 32 bits de mayor orden de Xi al argumento seedval. Los 16 bits de orden bajo son asignados con un valor arbitrario 0x330E.

La función inicializadora seed48() asigna el valor de Xi al valor de 48 bits especificado en el argumento cadena seed16v. Los valores previos de Xi son copiados en un buffer interno y un puntero a este buffer es retornado por seed48().

La función inicializadora lcong48() permite al usuario especificar los valores iniciales para Xi, a y c. En los elementos del argumento cadena: param[0-2] especifica Xi, param[3-5] especifica a, y param[6] especifica c. Luego de que lcong48() ha sido llamada, una subsecuente llamada a srand48() o seed48() puede restaurar los valores estándares de a y c.

CONFORME A
SVID 3

NOTAS
Estas funciones son declaradas obsoletas por SVID 3, declarando que la función rand(3) debe ser usada a cambio.

VER TAMBIEN
rand(3), random(3)