Scroll to navigation

drand48(3) Library Functions Manual drand48(3)

NOMBRE

drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - generan números pseudo-aleatorios distribuidos uniformemente

BIBLIOTECA

Biblioteca Estándar C (libc, -lc)

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)):

A continuación se muestran todas las funciones:


_XOPEN_SOURCE
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _SVID_SOURCE

DESCRIPCIÓN

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

Las funciones drand48() y erand48() devuelven valores en coma flotante de doble precisión no negativos uniformemente distribuidos entre [0.0, 1.0).

Las funciones lrand48() y nrand48() devuelven enteros largos no negativos distribuidos uniformemente en el intervalo [0, 2^31).

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

The srand48(), seed48(), and lcong48() functions are initialization functions, one of which should be called before using drand48(), lrand48(), or mrand48(). The functions erand48(), nrand48(), and jrand48() do not require an initialization function to be called first.

Todas las funciones trabajan generando una secuencia de enteros de 48 bits, Xi, de acuerdo a la fórmula de congruencia líneal:


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

The value returned by any of the functions drand48(), erand48(), lrand48(), nrand48(), mrand48(), or jrand48() is computed by first generating the next 48-bit Xi in the sequence. Then the appropriate number of bits, according to the type of data item to be returned, is copied from the high-order bits of Xi and transformed into the returned value.

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.

ESTÁNDARES

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

VÉASE TAMBIÉN

rand(3), random(3)

TRADUCCIÓN

La traducción al español de esta página del manual fue creada por Sebastian Desimone <chipy@argenet.com.ar>, Gerardo Aburruzaga García <gerardo.aburruzaga@uca.es> y Marcos Fouces <marcos@debian.org>

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.

10 Febrero 2023 Páginas de Manual de Linux 6.03