RANDOM(3)

NOMBRE
random, srandom, initstate, setstate - generador de números aleatorios.

SINOPSIS
#include <stdlib.h>

long int random(void);
void srandom(unsigned int seed);
char *initstate(unsigned int seed, char *state, size_t n);
char *setstate(char *state);

DESCRIPCIÓN
La función random() emplea un generador no lineal aditivo con retroalimentación de números aleatorios utilizando una tabla predeterminada de 31 enteros largos para devolver números pseudo-aleatorios sucesivos en el rango de 0 a RAND_MAX. El periodo de este generador de números aleatorios es muy grande, aproximadamente 16*((2**31)-1).

La función srandom() establece su argumento como la semilla de una nueva secuencia de enteros seudo-aleatorios que serán devueltos por random() en secuencia. Estas secuencias son repetibles si se llama a srandom() con el mismo valor para la semilla. Si no se proporciona ninguna semilla, porque no se llama a srandom(), la función random() automáticamente asume una semilla de valor 1.

La función initstate() permite inicializar un vector de estado, estado, para el uso por parte de random(). El tamaño del vector de estado, n, es usado por initstate() para decidir cuán sofisticado debe ser el generador de números aleatorios que debería usar: cuanto más grande sea el vector de estado, más aleatorios serán los números. El argumento semilla es la semilla para la inicialización, que especifica un punto de arranque para la secuencia de números aleatorios, y hace posible recomenzar en el mismo punto.

La función setstate() cambia el vector de estado usado por la función random(). El vector de estado, estado, se usa para la generación de números aleatorios hasta la siguiente llamada a initstate() o setstate(). El argumento estado debe haber sido inicializado primero mediante initstate() o ser el resultado de una llamada previa a setstate().

VALOR DEVUELTO
La función random() devuelve un valor entre 0 y RAND_MAX. La función srandom() no devuelve nada. Las funciones initstate() y setstate() devuelven un puntero al vector de estado anterior, o NULL en caso de error.

ERRORES

EINVAL
    Se ha especificado un vector de estado de menos de 8 bytes para initstate().

OBSERVACIONES
Los valores actuales "óptimos" para el tamaño del vector de estado, n, son 8, 32, 64, 128, y 256 bytes; otras cantidades serán redondeadas por abajo hasta la cantidad conocida más cercana. Utilizar menos de 8 bytes producirá un error.

CONFORME A
BSD 4.3

VÉASE TAMBIÉN
rand(3), srand(3)