NOME¶
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 -
gera números pseudo-randômicos distribuidos uniformemente
SINOPSE¶
#include <stdlib.h>
double drand48(void);
double erand48(unsigned short int xsubi[3]);
long int lrand48(void);
long int nrand48(unsigned short int xsubi[3]);
long int mrand48(void);
long int jrand48(unsigned short int xsubi[3]);
void srand48(long int seedval);
unsigned short int *seed48(unsignedshortint seed16v [3]);
void lcong48(unsigned short int param[7]);
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.
As funções
drand48() e
erand48() retornam inteiros
longos não-negativos distribuidos uniformemente entre [0.0, 1.0).
As funções
lrand48() e
nrand48() retornam inteiros
longos não-negativos distribuidos uniformemente entre 0 e 2^31.
As funções
mrand48() e
jrand48() retornam inteiros
longos com sinal distribuidos uniformemente entre -2^31 and 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:
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.
SVID 3
NOTAS¶
Essas funções são declaradas obsoletas por SVID 3, o qual indica
que
rand(3) deve ser usado em seu lugar.
VEJA TAMBÉM¶
rand(3),
random(3)
TRADUZIDO POR LDP-BR em 21/08/2000.¶
Marcelo D. Beckmann <marcelobeckmann@yahoo.com> (tradução)
Espaço para o Revisor <nome@dominio.com.br> (revisão)