random()

Сгенерировать псевдослучайное число

Прототип:

#include <stdlib.h>
long random( void );

Библиотека:

libc

Описание:

Функция random() использует генератор случайных чисел с нелинейной аддитивной обратной связью. По умолчанию, размер массива составляет 31 длинное целое число. Массив используется для возврата последовательных псевдослучайных чисел в диапазоне от от 0 до 2³¹-1. Период данного генератора случайных чисел приблизительно равен 16 × (2³¹-1). Размер массива определяет период генератора случайных чисел. Увеличение размера массива состояний увеличивает период.

Используйте эту функцию вместе со следующими:

initstate()
Инициализировать состояние генератора псевдослучайных чисел.
setstate()
Задать состояние генератора псевдослучайных чисел.
srandom()
Установить начальное значение, используемое генератором псевдослучайных чисел.

Функции 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 системной библиотеки