Provided by: manpages-pl-dev_4.27.0-1_all bug

NAZWA

       drand48,  erand48,  lrand48,  nrand48,  mrand48,  jrand48, srand48, seed48, lcong48 - generuje jednolicie
       rozłożone liczby pseudolosowe

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #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]);

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

       Wszystkie funkcje powyżej:
           _XOPEN_SOURCE
               || /* glibc >= 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_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 [0, 2^31).

       Funkcje  mrand48()  i  jrand48()  zwracają  wartości  long  integer  ze  znakiem równomiernie rozłożone w
       przedziale [-2^31, 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

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
       ┌───────────────────────────────────────────────────────────┬────────────────────────┬──────────────────┐
       │ InterfejsAtrybutWartość          │
       ├───────────────────────────────────────────────────────────┼────────────────────────┼──────────────────┤
       │ drand48(), erand48(), lrand48(), nrand48(), mrand48(),    │ Bezpieczeństwo wątkowe │ MT-niebezpieczne │
       │ jrand48(), srand48(), seed48(), lcong48()                 │                        │ race:drand48     │
       └───────────────────────────────────────────────────────────┴────────────────────────┴──────────────────┘

       Powyższe funkcje zapisują globalne informacje o  stanie  generatora  liczb  losowych,  tak  więc  nie  są
       bezpieczne dla wątków.

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001, SVr4.

ZOBACZ TAKŻE

       rand(3), random(3)

TŁUMACZENIE

       Tłumaczenie   niniejszej   strony   podręcznika:   Adam  Byrtek  <alpha@irc.pl>,  Andrzej  Krzysztofowicz
       <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.9.1                            2 maja 2024 r.                                       drand48(3)