Provided by:
manpages-pl-dev_20060617-1_all 
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
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:
a = 0x5DEECE66D
c = 0xB
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)
1993-07-02 DRAND48(3)