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.
BSD 4.3
VÉASE TAMBIÉN¶
rand(3),
srand(3)