- •Оглавление
- •Алгоритмы на перестановках
- •Введение
- •Перестановки. Произведение перестановок
- •Обратные перестановки. Алгоритмы
- •Рекурсия
- •Информационные структуры
- •Последовательное и связанное распределение данных
- •Стеки и очереди
- •Организация связанного распределения на основе стеков и очередей
- •Деревья
- •Представление деревьев
- •Прохождение деревьев, леса
- •Алгоритмы на графах
- •Графы. Представления графов. Связность и расстояние
- •Остовные деревья
- •Поиск по графу в глубину. Топологическая сортировка
- •Топологическая сортировка
- •Транзитивное замыкание. Поиск кратчайшего пути на графе
- •Поиск кратчайшего пути
- •4. Генерирование случайных последовательностей
- •4.1. Генерирование равномерно распределенных случайных чисел
- •Джон фон Нейман
- •4.2. Основные критерии проверки случайных наблюдений
- •4.3. Эмпирические критерии
- •Критерий равномерности (критерий частот)
- •Критерий серий
- •Критерий интервалов
- •Покер-критерий (критерий разбиений)
- •4.4. Численные распределения
- •Случайный выбор из ограниченного множества
- •Общие методы для непрерывных распределений
- •Нормальное распределение
- •Показательное распределение
- •4.5. Что такое случайная последовательность
- •Процедура получения простейшего генератора случайных чисел
- •Литература
4.4. Численные распределения
При использовании случайных чисел часто требуются помимо равномерного распределения и другие виды распределений в зависимости от приложений. Например, необходимо моделировать случайное время ожидания между появлениями независимых событий, что достигается на основе применения показательного распределения случайных чисел. Иногда в случайных числах нет необходимости, но нужны случайные перестановки (случайное размещение n объектов) или случайное сочетание (случайный выбор k объектов из совокупности, содержащей n объектов).
В принципе, любая из этих случайных величин может быть получена из равномерно распределенных случайных величин U0 , U1 , U2 , …, где Ui [0, 1].
Случайный выбор из ограниченного множества
В общем случае случайные целые числа X, которые лежат между 0 и k–1, можно получить, умножив U на k и положив X = k U (ближайшее целое снизу).
В общем случае можно получить, если необходимо, различные веса для различных целых чисел. Предположим, что значение X = x1 должно быть получено с вероятностью p1, X = x2 — с вероятностью p2, … и X = xk — с вероятностью pk. Для этого генерируется равномерное число U и полагается
(Заметим, что .)
Общие методы для непрерывных распределений
В общем случае распределение действительных чисел может быть выражено в терминах «функции распределения» F(X), которая точно определяет вероятность того, что случайная величина X не превысит значения x:
F(X) = Pr (X x) (4.11)
Эта функция всегда монотонно возрастает от 0 до 1, т.е. F(x1) F(x2), если x1 x2;
F(-) = 0, F(+) = 1. Если F(X) непрерывна и строго возрастающая (так что
F(x1) < F(x2) , когда x1 < x2), то она принимает все значения между 0 и 1 и существует обратная функция F-1(y), такая, что для 0 < y < 1 Y = F(X), тогда и только тогда, когда
X = F -1(y). В большинстве случаев, когда F(X) непрерывна и строго возрастающая, можно вычислить случайную величину X с распределением F(X), полагая X = F -1 (U), где U — равномерно распределенная случайная величина. Заметим, что если х1 — случайная величина, имеющая функцию распределения F1(Х), и если х2 — независимая от х1 случайная величина с функцией распределения F2(Х), то max (х1, х2) имеет распределение F1(Х) F2(Х), min (х1, х2) имеет распределение F1(Х) + F2(Х) – F1(Х) F2(Х).
Любой алгоритм, использующий случайные числа на входе, дает на выходе случайные величины с некоторым распределением.
Нормальное распределение
Возможно, наиболее значительным неравномерным распределением является нормальное распределение с нулевым средним значением и среднеквадратичным отклонением, равным единице:
(4.12)
Рассмотрим алгоритм вычисления двух независимых нормально распределенных случайных величин: X1 и X2.
Алгоритм Р. (Метод полярных координат для нормальных случайных величин).
Р1. [Получение равномерно распределенных случайных величин.] Сгенерировать две независимые случайные величины U1 и U2, равномерно распределенные между 0 и 1. Присвоить V1 2U1 – 1, V2 2U2 – 1. (Здесь V1 и V2 равномерно распределены между –1 и +1.)
Р2. [Вычисление S.] Присвоить S V12 + V22.
Р3. [Проверить S 1?] Если S 1 возврат к п. Р1.
Р4. [Вычисление X1, X2.] Присвоить X1 и X2 следующие значения:
, .
Это требуемые нормально распределенные случайные величины.