oracular (3) initstate.3.gz

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

NAZWA

       random, srandom, initstate, setstate - generator liczb losowych

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <stdlib.h>

       long random(void);
       void srandom(unsigned int seed);

       char *initstate(unsigned int seed, char state[.n], 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 >= 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

OPIS

       Funkcja   random()   korzysta   z   generatora   liczb  losowych  opartego  na  nieliniowych  addytywnych
       przesunięciach, stosującego domyślną tablicę o  rozmiarze  31  długich  liczb  całkowitych  do  zwracania
       kolejnych liczb pseudolosowych z zakresu pomiędzy 0 a 2^31 - 1. Okres tego generatora liczb losowych jest
       bardzo duży, wynosi około 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

       Funkcja random() zwraca wartości pomiędzy 0 a (2^31) - 1. Funkcja srandom() nie zwraca żadnej wartości.

       Funkcja  initstate()  zwraca  wskaźnik  do  poprzedniej  tablicy  stanów. W przypadku błędu zwraca NULL i
       ustawia errno, wskazując błąd.

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

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(), initstate(), setstate()                   │ Bezpieczeństwo wątkowe │ MT-bezpieczne │
       └───────────────────────────────────────────────────────────────┴────────────────────────┴───────────────┘

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001, 4.3BSD.

UWAGI

       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” — „Liczby losowe”) drugiego tomu („Seminumerical Algorithms” —
       „Algorytmy seminumeryczne”) książki Donalda E. Knutha „The Art of Computer Programming”; wydanie  drugie;
       Reading, Massachusetts: Addison-Wesley Publishing Company, 1981 (tytuł polski: „Sztuka programowania”).

ZASTRZEŻENIA

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

USTERKI

       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)

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