drand48(3) Library Functions Manual drand48(3) NAZWA drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - generowanie jednolicie rozlozonych liczb pseudolosowych BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include 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 powyzej: _XOPEN_SOURCE || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE OPIS Funkcje te generuja liczby pseudolosowe korzystajac z liniowego algorytmu kongruencyjnego i 48-bitowej arytmetyki liczb calkowitych. Funkcje drand48() i erand48() zwracaja nieujemne zmiennoprzecinkowe wartosci podwojnej precyzji rownomiernie rozlozone w przedziale [0.0, 1.0). The lrand48() and nrand48() functions return nonnegative long integers uniformly distributed over the interval [0, 2^31). The mrand48() and jrand48() functions return signed long integers uniformly distributed over the interval [-2^31, 2^31). Funkcje srand48(), seed48() i lcong48() to funkcje inicjujace. Jedna z nich powinna zostac wywolana przed uzyciem funkcji drand48(), lrand48() czy mrand48(). Funkcje erand48(), nrand48() i jrand48() nie wymagaja wczesniejszego wywolania funkcji inicjujacej. Wszystkie te funkcje generuja ciag 48-bitowych liczb calkowitych Xi wedlug liniowego wzoru kongruencyjnego: Xn+1 = (aXn + c) mod m, gdzie n >= 0 The parameter m = 2^48, hence 48-bit integer arithmetic is performed. Unless lcong48() is called, a and c are given by: a = 0x5DEECE66D c = 0xB Wartosc zwracana przez kazda z funkcji drand48(), erand48(), lrand48(), nrand48(), mrand48() czy jrand48() jest obliczana przez wygenerowanie nastepnego 48-bitowego Xi z ciagu, a nastepnie skopiowanie odpowiedniej liczby bardziej znaczacych bitow Xi, zaleznej od zwracanego typu danych, i przeksztalcenie ich w zwracana wartosc. Funkcje drand48(), lrand48() i mrand48() przechowuja ostatnia 48-bitowa wartosc Xi w wewnetrznym buforze. Funkcje erand48(), nrand48() i jrand48() wymagaja od wywolujacego je programu zapewnienia miejsca dla kolejnych wartosci Xi w tablicy xsubi podanej jako argument. Te funkcje sa inicjowane przez umieszczenie w tablicy poczatkowych wartosci Xi przed pierwszym wywolaniem funkcji. Funkcja inicjujaca srand48() wpisuje wartosc argumentu seedval do Xi, ustawiajac 32 bardziej znaczace bity. Mniej znaczacym 16 bitom zawsze nadawana jest wartosc 0x330E. Funkcja inicjujaca seed48() zmienia wartosc Xi na 48-bitowa wartosc podana w argumencie tablicowym seed16v. Poprzednia wartosc Xi jest kopiowana do wewnetrznego bufora, a wskaznik do tego bufora jest zwracany przez funkcje seed48(). Funkcja inicjujaca lcong48() pozwala okreslic poczatkowe wartosci dla Xi, a oraz c. Elementy tablicy param[0-2] okreslaja Xi, param[3-5] okreslaja a, a param[6] okresla c. Po wywolaniu lcong48() kazde nastepne wywolanie srand48() czy seed48() przywroci standardowe wartosci a i c. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +----------------------------+--------------------------+--------------+ |Interfejs | Atrybut | Wartosc | +----------------------------+--------------------------+--------------+ |drand48(), erand48(), | Bezpieczenstwo watkowe | MT-Unsafe | |lrand48(), nrand48(), | | race:drand48 | |mrand48(), jrand48(), | | | |srand48(), seed48(), | | | |lcong48() | | | +----------------------------+--------------------------+--------------+ Powyzsze funkcje zapisuja globalne informacje o stanie generatora liczb losowych, tak wiec nie sa bezpieczne dla watkow. STANDARDY POSIX.1-2008. HISTORIA POSIX.1-2001, SVr4. ZOBACZ TAKZE rand(3), random(3) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Adam Byrtek , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. drand48(3)