Сгенерировать псевдослучайное число
#include <stdlib.h>long random( void );
libc
Функция random() использует генератор случайных чисел с нелинейной аддитивной обратной связью. По умолчанию, размер массива составляет 31 длинное целое число. Массив используется для возврата последовательных псевдослучайных чисел в диапазоне от от 0
до 2³¹-1
. Период данного генератора случайных чисел приблизительно равен 16 × (2³¹-1)
. Размер массива определяет период генератора случайных чисел. Увеличение размера массива состояний увеличивает период.
Используйте эту функцию вместе со следующими:
Функции random() и srandom() имеют (почти) одинаковую последовательность вызова и свойства инициализации как rand() и srand(). Разница в том, что rand() создает гораздо менее случайную последовательность. Фактически, младшая дюжина битов генерируемых rand() проходит по циклическому шаблону. Все биты, сгенерированные random(), можно использовать. Например,
random() & 01
производит случайное двоичное значение.
В отличие от srand(), srandom() не возвращает старое начальное число, потому что объем используемой информации о состоянии намного превышает одно слово. Процедуры initstate() и setstate() предназначены для перезапуска/изменения генераторов случайных чисел. При «256» байтах информации о состоянии период генератора случайных чисел больше 2⁶⁹
.
По аналогии с rand(), random() по умолчанию производит последовательность чисел, которую можно продублировать, вызвав srandom() с 1
в качестве начального значения.
Если initstate() не был вызвана, random() ведет себя так, как если бы initstate() была вызвана с seed=1 и size=128.
Если initstate() вызывается с размером меньше, чем 8
, random() использует простой линейный конгруэнтный генератор случайных чисел.
Сгенерированное псевдослучайное число.
См. initstate().
POSIX 1003.1 X/Open Systems Interfaces Extension
drand48(), initstate(), rand(), setstate(), srand(), srandom()
Предыдущий раздел: Описание API системной библиотеки