table of contents
RANDOM(3) | Manual del Programador de Linux | 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.3VÉASE TAMBIÉN¶
rand(3), srand(3)20 agosto 2000 | GNU |