Man page - jrand48(3)

Packages contains this manual

Available languages:

en fr pt_BR es pl ja ro

Manual

drand48

NAZWA
BIBLIOTEKA
SKŁADNIA
OPIS
ATRYBUTY
STANDARDY
HISTORIA
ZOBACZ TAKŻE
TŁUMACZENIE

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

Image grohtml-3993513-1.png

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 .