Provided by: manpages-pl-dev_4.13-4_all bug

NAZWA

       random, srandom, initstate, setstate - generator liczb losowych

SKŁADNIA

       #include <stdlib.h>

       long random(void);

       void srandom(unsigned seed);

       char *initstate(unsigned seed, char *state, size_t n);

       char *setstate(char *state);

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

       random(), srandom(), initstate(), setstate():
           _XOPEN_SOURCE >= 500
               || /* Glibc od 2.19: */ _DEFAULT_SOURCE
               || /* Glibc w wersji <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

OPIS

       The  random()   function  uses  a  nonlinear  additive  feedback  random  number generator
       employing a default table of size 31 long  integers  to  return  successive  pseudo-random
       numbers  in  the  range from 0 to 2^31 - 1.  The period of this random number generator is
       very large, approximately 16 * ((2^31) - 1).

       Funkcja  srandom()  ustawia  swój  argument  jako  wartość  początkową  dla  nowego  ciągu
       pseudolosowych  liczb całkowitych zwracanych przez random(). Ciągi te są powtarzalne przez
       wywołanie srandom() z tą samą wartością początkową. Jeśli nie podano wartości początkowej,
       funkcja random() automatycznie ustawia tę wartość na 1.

       Funkcja  initstate()  pozwala  na  inicjację tablicy stanów state w celu wykorzystania jej
       przez random(). initstate() wykorzystuje rozmiar tablicy stanów n do  podjęcia  decyzji  o
       tym,  jakiego  wymyślnego  generatora  liczb  losowych powinna używać — im większa tablica
       stanów, tym lepszy będzie generator  liczb  losowych.  Obecnie  "optymalnymi"  wartościami
       rozmiaru  n  tablicy  stanów  są:  8,  32,  64,  128  i  256 bajtów; inne wartości zostaną
       zaokrąglone w dół do najbliższej z wymienionych wartości. seed jest  wartością  początkową
       dla  inicjacji,  która  określa  punkt startu ciągu generatora liczb losowych oaz zapewnia
       restart w tym samym punkcie.

       Funkcja setstate() zmienia tablicę stanów wykorzystywaną przez funkcję  random().  Tablica
       stanu  state  jest  używana  do  generacji  liczb  losowych  aż  do  następnego  wywołania
       initstate() lub setstate(). state musi być uprzednio zainicjowana  za  pomocą  initstate()
       lub być wynikiem wcześniejszego wywołania setstate().

WARTOŚĆ ZWRACANA

       The  random()  function returns a value between 0 and (2^31) - 1.  The srandom()  function
       returns no value.

       Funkcja initstate() zwraca wskaźnik do  poprzedniej  tablicy  stanów.  W  przypadku  błędu
       ustawiane jest errno, wskazując na przyczynę błędu.

       Jeśli  zakończy  się  pomyślnie, funkcja setstate() zwraca wskaźnik do poprzedniej tablicy
       stanów. W przypadku błędu zwraca NULL i ustawia errno, wskazując na przyczynę błędu.

BŁĘDY

       EINVAL Argument state przekazany do setstate() był równy NULL.

       EINVAL Podano mniejszą niż 8-bajtową tablicę stanów dla initstate().

ATRYBUTY

       Informacje  o  pojęciach  używanych  w  tym  rozdziale   można   znaleźć   w   podręczniku
       attributes(7).

       ┌────────────────────────┬────────────────────────┬─────────┐
       │InterfejsAtrybutWartość │
       ├────────────────────────┼────────────────────────┼─────────┤
       │random(), srandom(),    │ Bezpieczeństwo wątkowe │ MT-Safe │
       │initstate(), setstate() │                        │         │
       └────────────────────────┴────────────────────────┴─────────┘

ZGODNE Z

       POSIX.1-2001, POSIX.1-2008, 4.3BSD.

UWAGI

       Funkcja  random()  nie powinna być używana w programach wielowątkowych, gdy wymagane jest,
       by jej zachowanie było powtarzalne. Do tego celu należy użyć random_r(3).

       Generowanie liczb pseudolosowych jest złożonym tematem. "Numerical Recipes in C:  The  Art
       of  Scientific Computing" (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William
       T. Vetterling; New York: Cambridge University Press,  2007,  wydanie  3.)  w  rozdziale  7
       ("Random  Numbers")  zawiera  wybitną dyskusję o praktycznych problemach generowania liczb
       pseudolosowych.

       Bardziej teoretyczną dyskusję,  także  zawierającą  szczegółowy  opis  wielu  praktycznych
       problemów  można  znaleźć  w rozdziale 3. ("Random Numbers") drugiego tomu ("Seminumerical
       Algorithms") książki Donalda E. Knutha "The Art of Computer Programming"; wydanie  drugie;
       Reading, Massachusetts: Addison-Wesley Publishing Company, 1981.

BŁĘDY

       Zgodnie   z   POSIX  funkcja  initstate()  powinna  zwrócić  NULL  w  przypadku  błędu.  W
       implementacji glibc w razie błędu ustawiane  jest  errno  (jak  określono  w  POSIX),  ale
       funkcja nie zwraca NULL.

ZOBACZ TAKŻE

       getrandom(2), drand48(3), rand(3), random_r(3), srand(3)

O STRONIE

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

T◈UMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej strony podręcznika są: 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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.