DRAND48(3)

НАЗВАНИЕ
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - генерируют равномерно распределенные псевдослучайные числа

СИНТАКСИС
#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 seedval);

unsigned short int *seed48(unsignedshort seed16v [3]);

void lcong48(unsigned short param[7]);

ОПИСАНИЕ
Эти функции генерируют псевдослучайные числа, используя линейный алгоритм и 48-битную целочисленную арифметику.

Функции drand48() и erand48() возвращают неотрицательное число (с плавающей точкой) двойной точности, находящееся в промежутке [0.0 , 1.0).

Функции lrand48() и nrand48() возвращают неотрицательное длинное целое число, находящееся между 0 и 2^31.

Функции mrand48() и jrand48() возвращают длинное целое число, находящееся между -2^31 и 2^31.

Функции srand48(), seed48() и lcong48() - это инициализационные функции, одна из которых должна быть вызвана перед использованием drand48(), lrand48() или mrand49(). Функции erand48(), nrand48() и jrand48() не требуют инициализации.

Все функции работают при помощи сгенерированной последовательности 48-битных целых чисел Xi, в соответствии с линейной конгруэнтной формулой:

    Xn+1 = (aXn + c) mod m, где n >= 0

Параметр m = 2^48. Если lcong48() не вызывался, a и c установлены как:

    a = 0x5DEECE66D
    c = 0xB

Величина, возвращаемая любой из функций: drand48(), erand48(), lrand48(), nrand48(), mrand48() или jrand48(), - вычисляется при одновременной генерации следующей 48-битной Xi-последовательности. Когда соответствующее количество битов, в зависимости от типа данных, будет возвращено, происходит копирование его из старших битов Xi и преобразование в возвращаемое значение.

Функции drand48(), lrand48() и mrand48() сохраняют последние сгенерированные 48 битов Xi во внутреннем буфере. Функции erand48(), nrand48() и jrand48() требуют от вызывающей программы предоставить место для хранения величины Xi в массиве xsubi. Функции инициализируются начальной величиной Xi, указанной в массиве при первом вызове.

СООТВЕТСТВИЕ СТАНДАРТАМ
SVID 3

ЗАМЕЧАНИЯ
Эти функции считаются устаревшими в SVID 3. Рекомендуется использовать rand(3).

СМ. ТАКЖЕ
rand(3), random(3)