Scroll to navigation

DRAND48(3) Manual del Programador de Linux 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 xsubi[3]);
long lrand48(void);
long nrand48(unsigned short xsubi[3]);
long mrand48(void);
long jrand48(unsigned short xsubi[3]);
void srand48(long seedval);
unsigned short *seed48(unsigned short seed16v[3]);
void lcong48(unsigned short param[7]);

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

All functions shown above: _XOPEN_SOURCE
|| /* Glibc since 2.19: */ _DEFAULT_SOURCE
|| /* Glibc versions <= 2.19: */ _SVID_SOURCE

DESCRIPCIÓN

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

The drand48() and erand48() functions return nonnegative double-precision floating-point values uniformly distributed over the interval [0.0, 1.0).

The lrand48() and nrand48() functions return nonnegative long integers uniformly distributed over the interval [0, 2^31).

The mrand48() and jrand48() functions return signed long integers uniformly distributed over the interval [-2^31, 2^31).

Las funciones srand48(), seed48() y lcong48() son funciones de inicialización, una de las cuales debe ser llamada antes de usar drand48(), lrand48() o mrand48(). 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, donde n >= 0

El parámetro m = 2^48, de aquí que la aritmética sea de 48 bits. A menos que se llame a lcong48(), a y c son:


a = 0x5DEECE66D
c = 0xB

El valor devuelto 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 se copia el número apropiado de bits, de acuerdo al tipo de dato a ser devuelto, desde los bits de mayor orden de Xi, y se transforman en el valor devuelto.

Las funciones drand48(), lrand48() y mrand48() guardan el último Xi de 48 bits generado, en un búfr interno. Las funciones erand48(), nrand48() y jrand48() requieren que el programa que las llame proporcione almacenamiento para los sucesivos valores Xi en el argumento vector xsubi. Las funciones se inicializan al colocar el valor inicial de Xi en la cadena antes de llamar a la función la primera vez.

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

La función inicializadora seed48() asigna el valor de Xi al valor de 48 bits especificado en el argumento vector seed16v. Los valores anteriores de Xi se copian en un búfer interno y seed48() devuelve un puntero a este búfer interno.

La función inicializadora lcong48() permite al usuario especificar los valores iniciales para Xi, a y c. En los elementos del argumento vector param[0-2] se especifica Xi, en param[3-5] se especifica a, y en param[6] se especifica c. Después de llamar a lcong48(), una llamada a srand48() o seed48() puede restaurar los valores estándares de a y c.

ATRIBUTOS

Para obtener una explicación de los términos usados en esta sección, véase attributes(7).

Interfaz Atributo Valor
drand48(), erand48(), lrand48(), nrand48(), mrand48(), jrand48(), srand48(), seed48(), lcong48() Seguridad del hilo MT-Unsafe race:drand48

The above functions record global state information for the random number generator, so they are not thread-safe.

CONFORME A

POSIX.1-2001, POSIX.1-2008, SVr4.

VÉASE TAMBIÉN

rand(3), random(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 Sebastian Desimone <chipy@argenet.com.ar> y Gerardo Aburruzaga García <gerardo.aburruzaga@uca.es>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 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>..

1 Noviembre 2020