NAZWA¶
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 -
generowanie jednolicie rozłożonych liczb pseudolosowych
SKŁADNIA¶
#include <stdlib.h>
double drand48(void);
double erand48(unsigned short xsubi[3]);
long int lrand48(void);
long int nrand48(unsigned short xsubi[3]);
long int mrand48(void);
long int jrand48(unsigned short xsubi[3]);
void srand48(long int seedval);
unsigned short *seed48(unsigned short seed16v[3]);
void lcong48(unsigned short param[7]);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
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
pomiędzy 0 a 2^31.
Funkcje
mrand48() i
jrand48() zwracają wartości long
integer ze znakiem równomiernie rozłożone w przedziale
pomiędzy -2^31 a 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, jako że korzystamy z 48-bitowej arytmetyki.
Jeśli nie wywołano
lcong48(),
a i
c są
zadane jako:
Wartość zwracana przez każdą z funkcji
drand48(),
erand48(),
lrand48(),
nrand48(),
mrand48() czy
jrand48() jest obliczana poprzez wygenerowanie następnego
48-bitowego
Xi z ciągu, a następnie skopiwanie odpowiedniej
ilości 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 zapawnienia miejsca dla
kolejnych wartości
Xi w tablicy
xsubi podanej jako
argument. Te funkcje są inicjowane poprzez 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ść podana w tablicy
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.
ZGODNE Z¶
SVID 3
UWAGI¶
Te funkcje są uznane przez SVID 3 za przestarzałe, zamiast nich
powinna być używana funkcja
rand(3).
ZOBACZ TAKŻE¶
rand(3),
random(3)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 3 drand48
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.