Рассмотрим особенности генерации на ЭВМ непрерывных случайных величин. Непрерывная случайная величина задана интегральной функцией распределения
где fη(у) — плотность вероятностей.
Для получения непрерывных случайных величин с заданным законом распределения, как и для дискретных величин, можно воспользоваться методом обратной функции. Взаимно однозначная монотонная функция , полученная решением относительно уравнения Fη(y)= , преобразует равномерно распределенную на интервале (0, 1) величину в с требуемой плотностью fη(у).
Действительно, если случайная величина имеет плотность распределения fη(у), то распределение случайной величины
является равномерным в интервале (0,1). На основании этого можно сделать следующий вывод. Чтобы получить число, принадлежащее последовательности случайных чисел {yj}, имеющих функцию плотности fη(у), необходимо разрешить относительно уjуравнение
(24)
Рассмотрим некоторые примеры получения методом обратной функции непрерывных случайных величин с заданным законом распределения на основе случайных чисел, имеющих равномерное распределение в интервале (0,1).
Пример 2. Необходимо получить случайные числа с показательным законом распределения
В силу соотношения (24) получим
где xi— случайное число, имеющее равномерное распределение в интервале (0,1). Тогда
Учитывая, что случайная величина = 1- имеет также равномерное распределение в интервале (0, 1), можно записать yj = .
Можно привести и другие примеры использования соотношения (24). Но этот способ получения случайных чисел с заданным законом распределения имеет ограниченную сферу применения в практике моделирования систем на ЭВМ, что объясняется следующими обстоятельствами: 1) для многих законов распределения, встречающихся в практических задачах моделирования, интеграл (24) не берется, т. е. приходится прибегать к численным методам решения, что увеличивает затраты машинного времени на получение каждого случайного числа; 2) даже для случаев, когда интеграл (24) берется в конечном виде, получаются формулы, содержащие действия логарифмирования, извлечения корня и т.д., которые выполняются с помощью стандартных подпрограмм ЭВМ, содержащих много исходных операций (сложения, умножения и т. п., что также резко увеличивает затраты машинного времени на получение каждого случайного числа.
Поэтому в практике моделирования систем часто пользуются приближенными способами преобразования случайных чисел, которые можно классифицировать следующим образом: а) универсальные способы, с помощью которых можно получать случайные числи с законом распределения любого вида; б) неуниверсальные способы пригодные для получения случайных чисел с конкретным законом распределения.
Рассмотрим приближенный универсальный способ получения случайных чисел, основанный на кусочной аппроксимации функции плотности. Пусть требуется получить последовательность случайных чисел {уj}с функцией плотности fη(у), возможные значения которой лежат в интервале (а, b). Представим fη(у) в виде кусочно-постоянной функции, т. е. разобьем интервал (а, b) на т интервалов, как это показано на рис. 1, и будем считать fη(у) на каждом интервале постоянной.
Рис.1. Кусочная аппроксимация функции плотности
Тогда случайную величину можно представить в виде , где аk — абсцисса левой границы k-го интервала; — случайная величина, возможные значения которой располагаются равномерно внутри k-гоинтервала, т. е. на каждом участке , величина * считается распределенной равномерно. Чтобы аппроксимировать fη(у) наиболее удобным для практических целей способом, целесообразно разбить (а, b)на интервалы так, чтобы вероятность попадания случайной величины в любой интервал (ak, ak+1) была постоянной, т. е. не зависела от номера интервала k. Таким образом, для вычисления ak воспользуемся следующим соотношением:
(25)
Алгоритм машинной реализации этого способа получения случайных чисел сводится к последовательному выполнению следующих действий:
1) генерируется случайное равномерно распределенное число xiиз интервала (0, 1);
2) с помощью этого числа случайным образом выбирается интервал (ak, ak+1);
3) генерируется число xi+1 и масштабируется с целью приведения его к интервалу (ak, ak+1), т. е. домножается на коэффициент ;
4) вычисляется случайное число с требуемым законом распределения.
Рассмотрим более подробно процесс выборки интервала (ak, ak+1) с помощью случайного числа хi. Целесообразно для этой цели построить таблицу (сформировать массив), в которую предварительно поместить номера интервалов k и значения коэффициента масштабирования, определенные из соотношения (6) для приведения числа к интервалу (а, b). Получив из генератора случайное число хi, с помощью этой таблицы сразу определяем абсцессу левой границы аки коэффициент масштабирования (ak+1 - ak).
Достоинства этого приближенного способа преобразования случайных чисел: при реализации на ЭВМ требуется небольшое количество операций для получения каждого случайного числа, так как операция масштабирования выполняется только один раз перед моделированием, и количество операций не зависит от точности аппроксимации, т. е. от количества интервалов т.
Рассмотрим еще один приближенный метод - метод Неймана. Суть его состоит в следующем. Пусть закон распределения вероятностей, который требуется ввести в последовательность случайных чисел, представлен плотностью fη(у), ограниченной на интервале (a, b) и для которой Для получения случайных чисел η с плотностью fη(у) генерируется пара исходных чисел (x1, x2), которая преобразуется в новую пару чисел x1* = a+(b - a)*x1 и x2* = M*x2. Если fη(x1*) ≥ x2*, то η = x1*, в противном случае необходимо вновь получить пару исходных чисел (x3, x4), преобразовать их, проверить условие и т.д.
Рассмотрим способы преобразования последовательности равномерно распределенных случайных чисел {xi} в последовательность с заданным законом распределения {yj} на основе предельных теорем теории вероятностей. Такие способы ориентированы на получение последовательностей чисел с конкретным законом распределения, т. е. не являются универсальными. Поясним сказанное примерами.
Пример 3. Пусть требуется получить последовательность случайных чисел {yj}, имеющих нормальное распределение с математическим ожиданием а исредним квадратическим отклонением :
Будем формировать случайные числа yjв виде сумы последовательностей случайных чисел {xi}, имеющих равномерное распределение в интервале (0,1). Так как исходной (базовой) последовательностью случайных чисел {хi} при суммировании является последовательность чисел, имеющих равномерное распределение в интервале (0, 1), то можно воспользоваться центральной предельной теоремой для одинаково распределенных случайных величин: если независимые одинаково распределенные случайные величины x1, …,хN имеют каждая математическое ожидание a1, a среднее квадратическое отклонение ,то сумма асимптотически нормальна с математическим ожиданием a=Na1исредним квадратическим отклонением .
Как показывают расчеты, сумма имеет распределение, близкое к нормальному, уже при сравнительно небольших N. Практически для получения последовательности нормально распределенных случайных чисел можно пользоваться значениями N=8-12, а в простейших случаях — меньшими значениями N, например N=4-5.