Provided by: manpages-pl-dev_0.6-2_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]);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       Wszystkie pokazane wyżej funkcje: _SVID_SOURCE || _XOPEN_SOURCE

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,  ponieważ  korzystamy  z  48-bitowej  arytmetyki. Jeśli nie wywołano
       lcong48(), to parametry a i c przyjmują wartości:

              a = 0x5DEECE66D
              c = 0xB

       Wartość zwracana  przez  każdą  z  funkcji  drand48(),  erand48(),  lrand48(),  nrand48(),
       mrand48()  czy  jrand48()  jest  obliczana przez wygenerowanie następnego 48-bitowego Xi z
       ciągu, a następnie skopiowanie odpowiedniej liczby 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  zapewnienia  miejsca  dla  kolejnych  wartości  Xi  w tablicy xsubi podanej jako
       argument. Te funkcje są inicjowane przez 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ść  podaną  w  argumencie
       tablicowym  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.

ATRYBUTY

   Wielowątkowość (patrz pthreads(7))
       Funkcje  drand48(),  erand48(),  lrand48(),  nrand48(),  mrand48(),  jrand48(), srand48(),
       seed48() i lcong48() zapisują globalne informacje o stanie generatora liczb losowych,  tak
       więc nie są bezpieczne dla wątków.

ZGODNE Z

       SVr4, POSIX.1-2001.

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)

O STRONIE

       Angielska wersja tej strony  pochodzi  z  wydania  3.71  projektu  Linux  man-pages.  Opis
       projektu,  informacje  dotyczące  zgłaszania błędów, oraz najnowszą wersję oryginału można
       znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika man  są:  Adam  Byrtek  (PTM)
       <alpha@irc.pl>,  Andrzej  Krzysztofowicz (PTM) <ankry@green.mf.pg.gda.pl> i Robert Luberda
       <robert@debian.org>.

       Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów  na
       stronie   http://sourceforge.net/projects/manpages-pl/.   Jest   zgodne   z  wersją   3.71
       oryginału.

                                            2013-06-21                                 DRAND48(3)