Provided by: manpages-pl-dev_20060617-1_all bug

NAZWA

       drand48,  erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48,
       lcong48 - generowanie jednolicie rozłożonych liczb pseudolosowych

SKŁADNIA

       #include <stdlib.h>

       double drand48(void);

       double erand48(unsigned short xsubi[3]);

       long int lrand48(void);

       long int nrand48(unsigned short xsubi[3]);

       long int mrand48(void);

       long int jrand48(unsigned short xsubi[3]);

       void srand48(long int seedval);

       unsigned short *seed48(unsigned short seed16v[3]);

       void lcong48(unsigned short param[7]);

OPIS

       Funkcje  te  generują  liczby  pseudolosowe  korzystając  z   liniowego
       algorytmu kongruencyjnego i 48-bitowej arytmetyki liczb całkowitych.

       Funkcje  drand48()  i  erand48()  zwracają nieujemne zmiennoprzecinkowe
       wartości podwójnej precyzji równomiernie rozłożone w  przedziale  [0.0,
       1.0].

       Funkcje  lrand48() i nrand48() zwracają nieujemne wartości long integer
       równomiernie rozłożone w przedziale pomiędzy 0 a 2^31.

       Funkcje mrand48() i jrand48() zwracają wartości long integer ze znakiem
       równomiernie rozłożone w przedziale pomiędzy -2^31 a 2^31.

       Funkcje  srand48(), seed48() i lcong48() to funkcje inicjujące. Jedna z
       nich powinna zostać wywołana przed użyciem funkcji drand48(), lrand48()
       czy  mrand48().  Funkcje  erand48(), nrand48() i jrand48() nie wymagają
       wcześniejszego wywołania funkcji inicjującej.

       Wszystkie te funkcje generują ciąg 48-bitowych  liczb  całkowitych  Xi,
       według liniowego wzoru kongruencyjnego:

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

       Parametr  m  =  2^48, jako że korzystamy z 48-bitowej arytmetyki. Jeśli
       nie wywołano lcong48(), a i c są zadane jako:

              a = 0x5DEECE66D
              c = 0xB

       Wartość zwracana przez każdą z funkcji drand48(), erand48(), lrand48(),
       nrand48(), mrand48() czy jrand48() jest obliczana poprzez wygenerowanie
       następnego 48-bitowego Xi z ciągu, a następnie skopiwanie  odpowiedniej
       ilości  bardziej  znaczących  bitów  Xi,  zależnej  od  zwracanego typu
       danych, i przekształcenie ich w zwracaną wartość.

       Funkcje drand48(), lrand48() i mrand48() przechowują ostatnią 48-bitową
       wartość  Xi  w  wewnętrznym  buforze.  Funkcje  erand48(),  nrand48() i
       jrand48() wymagają od wywołującego je programu zapawnienia miejsca  dla
       kolejnych wartości Xi w tablicy xsubi podanej jako argument. Te funkcje
       są inicjowane poprzez umieszczenie w tablicy początkowych  wartości  Xi
       przed pierwszym wywołaniem funkcji.

       Funkcja  inicjująca  srand48() wpisuje wartość argumentu seedval do Xi,
       ustawiając 32 bardziej znaczące bity. Mniej znaczącym 16  bitom  zawsze
       nadawana jest wartość 0x330E.

       Funkcja  inicjująca  seed48()  zmienia  wartość Xi na 48-bitową wartość
       podana w tablicy seed16v.  Poprzednia  wartość  Xi  jest  kopiowana  do
       wewnętrznego  bufora,  a  wskaźnik  do  tego bufora jest zwracany przez
       funkcję seed48().

       Funkcja inicjująca lcong48() pozwala określić początkowe  wartości  dla
       Xi,  a  oraz  c.  Elementy  tablicy param[0-2] określają Xi, param[3-5]
       określają a,  a  param[6]  określa  c.  Po  wywołaniu  lcong48()  każde
       następne   wywołanie   srand48()  czy  seed48()  przywróci  standardowe
       wartości a i c.

ZGODNE Z

       SVID 3

UWAGI

       Te funkcje są uznane przez SVID 3 za przestarzałe, zamiast nich powinna
       być używana funkcja rand(3).

ZOBACZ TAKŻE

       rand(3), random(3)

                                  1993-07-02                        DRAND48(3)