Scroll to navigation

drand48(3) Library Functions Manual drand48(3)

NOME

drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - gera números pseudo-randômicos distribuidos uniformemente

BIBLIOTECA

Biblioteca C Padrão (libc, -lc)

SINOPSE

#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 macro de teste de recursos para o glibc (consulte feature_test_macros(7)):

Todas as funções mostradas acima:


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

DESCRIÇÃO

Essas funções geram números pseudo-randômicos usando o algoritmo de congruência linear e aritmética inteira de 48-bit.

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

As funções srand48(), seed48() e lcong48() são funções de inicialização, as quais deve ser chamadas antes do uso de drand48(), lrand48() ou mrand49(). As funções erand48(), nrand48() e jrand48() não requerem a chamada da função de inicialização primeiro.

Todas as funções trabalham gerando uma sequencia de inteiros 48-bit, Xi, de acordo com a formula de congruência linear:


Xn+1 = (aXn + c) mod m, onde n >= 0

O parâmetro m = 2^48, portanto uma aritmética de inteiro 48-bit é realizada.A não ser que lcong48() seja chamada, a e c são obtidos por:


a = 0x5DEECE66D
c = 0xB

O valor retornado por qualquer uma das funções drand48(), erand48(), lrand48(), nrand48(), mrand48() ou jrand48() é computado para primeira geração do próximo 48-bit Xi na sequência. Então, o número apropriado de bits, de acordo com o tipo de item de dado a ser retornado, é copiado dos bits de mais alta ordem de Xi e transformado no valor retornado.

As funções drand48(), lrand48() e mrand48() armazenam o último 48-bit Xi gerado em um buffer interno. As funções erand48(), nrand48() e jrand48() requerem que o programa chamador providencie armazenamento para os valores sucessivos de Xi no argumento vetor xsubi. As funções são inicializadas pela colocação do valor inicial de Xi no vetor antes da primeira chamada as funções.

A função de inicialização srand48() ajusta os 32-bits de mais alta ordem de Xi para o argumento seedval. Os 16-bits de mais baixa ordem são ajustados arbitrariamente para o valor 0x330E.

A função de inicialização seed48() seta o valor de Xi para o valor 48-bit especificado no argumento vetor seed16v. O valor anterior de Xi é copiado em um buffer interno e um ponteiro para esse buffer é retornado por seed48().

A função de inicialização lcong48() permite ao usuário especificar valores iniciais para Xi, a e c. O elemento param[0-2] do argumento vetor especifica Xi, param[3-5] especifica a, e param[6] especifica c. Após a chamada de lcong48(), uma chamada subsequente a srand48() ou seed48() irá restaurar os valores padrão de a e c.

ATRIBUTOS

Para uma explicação dos termos usados nesta seção, consulte attributes(7).

Interface Atributo Valor
drand48(), erand48(), lrand48(), nrand48(), mrand48(), jrand48(), srand48(), seed48(), lcong48() Thread safety MT-Unsafe race:drand48

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

PADRÕES

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

VEJA TAMBÉM

rand(3), random(3)

TRADUÇÃO

A tradução para português brasileiro desta página man foi criada por Marcelo D. Beckmann <marcelobeckmann@yahoo.com> e André Luiz Fassone <lonely_wolf@ig.com.br>

Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.

Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.

10 fevereiro 2023 Linux man-pages 6.03