RANDOM(3)

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

SINOPSIS
#include <stdlib.h>

long random(void);

void srandom(unsigned seed);

char *initstate(unsigned seed, char *state, size_t n);

char *setstate(char *state);

    Requisitos de Macros de Prueba de Características para glibc (véase feature_test_macros(7)):

random(), srandom(), initstate(), setstate():
    _XOPEN_SOURCE >= 500
        || /* Glibc since 2.19: */ _DEFAULT_SOURCE
        || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

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 2^31 - 1. 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.

The initstate() function allows a state array state to be initialized for use by random(). The size of the state array n is used by initstate() to decide how sophisticated a random number generator it should use—the larger the state array, the better the random numbers will be. Current "optimal" values for the size of the state array n are 8, 32, 64, 128, and 256 bytes; other amounts will be rounded down to the nearest known amount. Using less than 8 bytes results in an error. seed is the seed for the initialization, which specifies a starting point for the random number sequence, and provides for restarting at the same point.

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
The random() function returns a value between 0 and (2^31) - 1. The srandom() function returns no value.

The initstate() function returns a pointer to the previous state array. On error, errno is set to indicate the cause.

On success, setstate() returns a pointer to the previous state array. On error, it returns NULL, with errno set to indicate the cause of the error.

ERRORES

EINVAL
    The state argument given to setstate() was NULL.

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

ATRIBUTOS
Para obtener una explicación de los términos usados en esta sección, véase attributes(7).
Interfaz | Atributo | Valor
random(), srandom(), initstate(), setstate() | Seguridad del hilo | Multi-hilo seguro

CONFORME A
POSIX.1-2001, POSIX.1-2008, 4.3BSD.

NOTAS
The random() function should not be used in multithreaded programs where reproducible behavior is required. Use random_r(3) for that purpose.

Random-number generation is a complex topic. Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 2007, 3rd ed.) provides an excellent discussion of practical random-number generation issues in Chapter 7 (Random Numbers).

For a more theoretical discussion which also covers many practical issues in depth, see Chapter 3 (Random Numbers) in Donald E. Knuth's The Art of Computer Programming, volume 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing Company, 1981.

ERRORES
According to POSIX, initstate() should return NULL on error. In the glibc implementation, errno is (as specified) set on error, but the function does not return NULL.

VÉASE TAMBIÉN
getrandom(2), drand48(3), rand(3), random_r(3), srand(3)

COLOFÓN
Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Gerardo Aburruzaga García <gerardo.aburruzaga@uca.es> y Miguel Pérez Ibars <mpi79470@alu.um.es> Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org>..