Генераторы случайныхчисел
Возможно использование трех способов генерации случайных чисел:
- аппаратный (физический);
- табличный (файловый);
- алгоритмический (программный);
Аппаратный способ предполагает использование случайных сигналов физического происхождения. Чаще всего в таких генераторах используются шумы в электроныых и полупроводниковых приборах, явления распада радиоактивных элементов.
Один из вариантов реализации заключается в следующем.
Возьмем фиксированный промежуток времени Δt. Если в его течение уровень напряжения превысит пороговое значение четное число раз – записывается ноль, нечетное – единица.
Для получения m-разрядного случайного числа параллельно соединяют m – генераторов.
Достоинства метода:
- запас чисел не ограничен;
- не занимается место в памяти ЭВМ;
Недостатки:
- требуется периодическая проверка и настройка;
- нельзя воспроизвести последовательности;
- требуется специальное устройство;
Табличный способ основан на использовании специальных таблиц, в которых размещены случайные числа, распределенные по какому-либо закону.
В компьютерных моделях такой способ применяется довольно редко.
Достоинства метода:
- требуется однократная проверка;
- можно воспроизвести последовательности;
Недостатки:
- ограниченный запас чисел;
- занимает существенное место в памяти (при обращении к внешней памяти требуется время);
Алгоритмический способ основан на формировании случайных чисел в ЭВМ с помощью специальных алгоритмов и реализующих их программ.
С этой точки зрения под генератором случайных чисел (или генератором псевдослучайных чисел согласно заданному распределению вероятностей и обладающий свойством видимости случайности).
Достоинства:
- требуется однократная проверка;
- можно многократно воспроизводить последовательности чисел;
- занимает мало места в памяти;
- не используются внешние (аппаратные) устройства.
Недостатки:
- запас чисел ограничен периодом генератора;
- более высокие затраты машинного времени на расчет.
В качестве базового случайного процесса используется повторная выборка из генеральной совокупности значений, равномерно распределенных в интервале (0;1). Используются рекурентные формулы , где i-случайное число определяется начиная с первого случайного числа.
Чаще всего используются так называемые конгруэнтные методы (наиболее распространенный – мультипликативный).
В основе конгруэнтных процедур лежит понятие конгруэнтности.
Два целых числа a и b конгруэнтны (сравнимы) по модулю m, где m – целое число, тогда и только тогда, когда существует такое целое число k, что a-b = km, т.е. если разность a-b делится на m и если числа a и b дают одинаковые остатки от деления на абсолютную величину m.
Рекуррентное соотношение имеет вид:
Xi+1 = λXi mod M,
где λ,X0 – целые положительные нечетные числа;
М – наиболее удобно выбирать так: M = pg;
где p – основание используемой системы счисления.
g – количество разрядов в получаемых случайных числах.
Пример:
Пусть необходимо получить случайное число , равномерно распределенное в интервале (0;1).
Пусть λ (ядро) = 5167;
X0 = 3729
M = 104 = 10000;
Тогда λXi = 19267743 и случ. число = 0,7743
на 2-м шаге Xi = 7743 , λXi = 40008081, случ. число = 0,8081
и т.д…
Количество случайных чисел, выработанных генератором до того, как они начнут повторяться, называются периодом или длинной генератора.
Метод обратной функции и его использование для гененрирования непрерывных случайных величин
Предположим, нам необходимо генерировать случайную величину Х, являющуюся непрерывной и имеющую функцию распределения F – непрерывную строго возрастающую, когда 0 < F(x) < 1, из этого следует, что если x1 < x2 и 0 < F(x1) < F(x2) < 1, то F(x1) < F(x2).
Примем, что F-1 – это обратная функция F. Две функции y = f(x) и y = phi(x) называются взаимно обратными, если для каждой пары значений a,b, удовлетворяющих условию b = f(a), удовлетворяется также условие a = phi(b), а для каждой пары , удовлетворяющих условию a = phi(b), удовлетворяется также условие b = f(a).
Одна из двух взаимно обратных функций может быть названа прямой (безразлично какая), тогда другая функция называется обратной.
Пример: y = x2 и y = +-sqrt(x)
y = ex и y = ln x
На первом шаге строится интегральная функция распределения F(x).
Т.к. F(x) изменяется в интервале от 0 до 1, полагают F(x) = R,
где R – случайная величина, равномерно распределенная в интервале (0,1).
Тогда: x = F-1(R)
где x – случайная величина с функцией плотности распределения f(x),
F-1‑ - функция, обратная по отношению к F.
Метод обратной функции и его использование для гененрирования дискретных случайных величин
Для дискретной величины X является функция распределения F(X) = P(X<=x) = ∑p(xi) (если xi<=x)
где pi(x) является вероятностной мерой p(xi) = P(X = xi)
Допускается, что величина X может иметь только значения x1,x2,… для которых x1<x2<…
Тогда алгоритм будет иметь следующий вид:
1. Генерируем U ~ U(0,1)
2. Определяем положительное наименьшее число I, для которого U <= F(xI) и возвращаем X = xI .