jammy (3) initstate.3.gz

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⟩.