МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Технологический институт Федерального государственного образовательного учреждение высшего учреждения высшего профессионального образования «Южный федеральный университет» А.Ю. МОЛЧАНОВ В.И.ФИНАЕВ ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ВЕЛИЧИН Учебное пособие Таганрог 2008 2 УДК 518.5.001.57(075.8) А.Ю. Молчанов, В.И.Финаев. Генерация случайных величин: Учебно-методическое пособие. - Таганрог: Изд-во Технологического института ЮФУ, 2008. - 132 с. ISBN Учебное поcобие пpедназначено для cтудентов высших учебных заведений, изучающиx дисциплины «Моделиpование cиcтем», «Компьютерное моделирование». В учебном пособии приведены основные теоретические положения имитационного моделирования, описание лабораторных работ и примеры написания программного приложения для этих лабораторных работ. Табл. 44. Ил. 43. Библиогр.: 5 назв. Рецензенты доктор технических наук, профессор, директор регионального (областного) центра новых информационных технологий, проректор по информатике ТТИ ЮФУ Целых А.Н. доктор технических наук, профессор, заведующий кафедрой информатики ТГПИ Ромм Я.Е. ТТИ ЮФУ, 2008 Финаев В.И., Молчанов А.Ю., 2008 3 СОДЕРЖАНИЕ ВВЕДЕНИЕ………………………………………….. 5 1. ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ И СЛУЧАЙНЫХ СОБЫТИЙ…………………..…….. 6 1.1. Генераторы случайных величин………….…..…….. 6 1.2. Моделирование случайных событий………………. 13 1.3. Исследование модели случайных событий………... 18 1.4. Моделирование сложных событий………………… 29 1.5. Программные приложения для задач моделирования………………………………... 35 2. ГЕНЕРАЦИЯ НЕПРЕРЫВНЫХ СЛУЧАЙНЫХ ВЕЛИЧИН И СЛУЧАЙНЫХ ПРОЦЕССОВ……….. 51 2.1. Генераторы непрерывных случайных величин…….51 2.2. Моделирование потоков событий……...…………... 57 2.3. Исследование моделей непрерывных случайных величин…………………………………………………… 60 2.4. Моделирование стационарных случайных процессов…………………………………… 63 2.5. Программные приложения для задач моделирования………………………………... 67 3. ЛАБОРАТОРНЫЙ ПРАКТИКУМ……………... 80 ЛАБОРАТОРНАЯ РАБОТА №1 РАЗРАБОТКА ГЕНЕРАТОРА РАВНОМЕРНО РАСПРЕДЕЛЕННЫХ СЛУЧАЙНЫХ ЧИСЕЛ…….. 80 ЛАБОРАТОРНАЯ РАБОТА №2 МОДЕЛИРОВАНИЕ ПРОСТЫХ СЛУЧАЙНЫХ СОБЫТИЙ…………………………… 85 ЛАБОРАТОРНАЯ РАБОТА №3 МОДЕЛИРОВАНИЕ СЛОЖНЫХ СЛУЧАЙНЫХ СОБЫТИЙ НА ПРИМЕРЕ ИГРАЛЬНОГО АВТОМАТА……………………….…. 83 4 ЛАБОРАТОРНАЯ РАБОТА №4 МОДЕЛИРОВАНИЕ СЛОЖНЫХ СЛУЧАЙНЫХ СОБЫТИЙ НА ПРИМЕРЕ РУЛЕТКИ……………………………………………….. 94 ЛАБОРАТОРНАЯ РАБОТА №5 РАЗРАБОТКА ГЕНЕРАТОРА СЛУЧАЙНЫХ ЧИСЕЛ С ЗАДАННЫМ ЗАКОНОМ РАСПРЕДЕЛЕНИЯ………………….…... 99 ЛАБОРАТОРНАЯ РАБОТА №6 ИССЛЕДОВАНИЕ ГЕНЕРАТОРОВ СЛУЧАЙНЫХ ЧИСЕЛ С НОРМАЛЬНЫМ ЗАКОНОМ РАСПРЕДЕЛЕНИЯ……………………… 103 ЛАБОРАТОРНАЯ РАБОТА №7 ОЗНАКОМЛЕНИЕ С МЕТОДАМИ ГЕНЕРАЦИИ СТАЦИОНАРНЫХ СЛУЧАЙНЫХ ПРОЦЕССОВ………………………....108 ЛАБОРАТОРНАЯ РАБОТА №8 ОЗНАКОМЛЕНИЕ С МЕТОДАМИ ГЕНЕРАЦИИ ПРОСТЕЙШИХ ПОТОКОВ СЛУЧАЙНЫХ СОБЫТИЙ……………………….…... 112 БИБЛИОГРАФИЧЕСКИЙ СПИСОК…….………. 117 ПРИЛОЖЕНИЕ 1 Описание генераторов случайных чисел………….… 118 ПРИЛОЖЕНИЕ 2 Текст программ генерации непрерывных случайных величин и случайных процессов…….…. 125 5 ВВЕДЕНИЕ Имитационное моделирование стохастических объектов связано с разработкой алгоритмов, программного продукта, проведением испытаний (опытов) на ЭВМ и обработкой результатов моделирования. Таким образом, решая задачи имитационного моделирования, необходимо знать теорию вероятностей и математическую статистику, уметь разрабатывать программные приложения и иметь навыки моделирования стохастических объектов. Цель данного пособия состоит в предоставлении возможности изучить соответствующие разделы теории, ознакомиться с рядом программных приложений, выполнить задания, лабораторные работы и в результате овладеть искусством имитационного моделирования стохастических объектов. 6 1. ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ И СЛУЧАЙНЫХ СОБЫТИЙ 1.1. Генераторы случайных величин 1.1.1. Генераторы псевдослучайных чисел. Моделирование поведения случайных объектов и процессов предполагает наличие в составе библиотеки используемых программ некоторого эталона случайных событий. Этим эталоном является программа, позволяющая получать псевдослучайные и квазиравномерно распределенные числа в интервале (0,1), которая называется генератором равномерно распределенных случайных чисел. Любая имитационная модель, а также компьютерные игры, имитирующие события, исход которых нельзя предугадать заранее, используют генераторы случайных чисел. Применяя генераторы равномерно распределенных случайных величин, можно разрабатывать генераторы случайных величин с заданными законами распределения. Получать случайные числа также можно, используя какое-нибудь физическое явление, например тепловой шум в полупроводниках, и на его основе создавать специальное устройство для ввода случайных чисел в компьютер. Этот способ используется при повышенных требованиях к характеристикам случайных чисел, например, в системах шифрования и криптоанализе. В обычных приложениях имитационного моделирования и компьютерных играх требования к случайным последовательностям не столь высоки, поэтому применяют программные методы получения случайных чисел. Существуют разные способы получения случайных чисел. Рассмотрим эти способы. 7 Табличный способ заключается в том, что уже полученные любым другим способом случайные числа сводятся в таблицу и генерация числа сводится к выбору из этой таблицы по некоторому правилу. Так как объем памяти ЭВМ ограничен, а период повторяемости случайной последовательности зависит от размера таблицы, то более целесообразно применять алгоритмический способ получения случайных чисел, более экономный по используемым ресурсам. Числа, получаемые алгоритмическим способом, называются псевдослучайными, так как алгоритм их получения строго определен и через некоторый период, называемый периодом генератора, вся случайная последовательность повторяется. Последовательность чисел в таких генераторах определяется только начальным числом (seed). Существуют различные алгоритмы получения псевдослучайных последовательностей: - линейные конгруэнтные генераторы; - метод Фибоначчи с запаздыванием; - вихрь Мерсенна (Mersenne twister, 1997). Линейные конгруэнтные алгоритмы связаны с применением следующей формулы: Xk+1=a(Xk+c)modM. (1.1) где a>0, c>0, m>0 - некоторые целочисленные константы. Получаемая последовательность зависит от выбора стартового числа X0 и при разных его значениях получают различные последовательности случайных чисел. Многие свойства последовательности Xj определяются выбором коэффициентов в формуле и не зависят от выбора X0. Младшие двоичные разряды генерированных таким образом случайных чисел демонстрируют поведение, далёкое от случайного, поэтому рекомендуется использовать только старшие разряды. Кроме того, при 8 получении случайного вектора большой размерности подобные алгоритмы не обеспечивают требуемых характеристик последовательности, что ограничивает их применение в методе статистических испытаний (метод Монте-Карло). Метод Фибоначчи с запаздыванием основан на следующей итеративной формуле: X - Xk-b , Xk-a Xk-b , Xk = k-a , Xk-a - Xk-b + 1, Xk-a < Xk-b , (1.2) где Xk - вещественные числа из диапазона [0,1), a, b - целые положительные числа, называемые лагами. Для работы датчику требуется знать max(a,b) предыдущих сгенерированных случайных чисел. При программной реализации для хранения генерированных случайных чисел используется конечная циклическая очередь на базе массива. Для старта датчику требуется max(a,b) случайных чисел, которые могут быть генерированы простым конгруэнтным датчиком. Рекомендуются следующие значения: a=55, b=24; a=17, b=5; a=97, b=33. Качество получаемых случайных чисел зависит от значения константы - чем оно больше, тем больше размерность пространства, в котором сохраняется равномерность случайных векторов, образованных из полученных случайных чисел. В то же время, с увеличением величины константы a увеличивается объём используемой алгоритмом памяти. 1.1.2. Проверка качества генератора. Любой генератор случайных величин перед началом моделирования необходимо протестировать на равномерность, период последовательности, отсутствие корреляции [1]. Для проверки качества генераторов случайных чисел могут быть использованы тест частот и тест пар частот [2]. Рассмотрим особенности их применения. 9 Датчик генерирует равномерно распределенные в диапазоне (0,1) случайные числа xi. Разобьем диапазон (0,1) на n непересекающихся отрезков равной длины и подсчитаем число попаданий случайных чисел в каждый отрезок (рис. 1.1). m1 0 1 m2 2 …. m3 mm 3 n 1 Рис. 1.1 Теоретическая вероятность попадания в каждый отрезок pi=1/n. Оценкой вероятности по результатам N испытаний будет частость p*i=mi/N, где mi – количество чисел, попавших в i-й отрезок единичного интервала. Результаты моделирования приведены в табл. 1.1. Таблица 1.1 Номер интервала pi mi p*i 1 2 … n 1/n m1 p*1 1/n m2 p*2 … … … 1/n mn p*n Принятую гипотезу о том, что распределение случайной величины является равномерным, будем проверять по критерию согласия Пирсона (2). По результатам испытаний рассчитаем величину n (m Np i ) 2 . (1.3) 2 i Np i i 1 Если проверяемая гипотеза о том, что распределение случайных чисел является равномерным, верна, то эта величина при больших значениях N имеет распределение, близкое к распределению 2 с n-1 степенями свободы. 10 Чтобы определить правило проверки, необходимо выбрать уровень значимости для критерия или доверительную вероятность . Проще всего, зная функцию распределения F(2,s), определить такое значение χ 2д , которому бы соответствовало значение доверительной вероятности =P(2< χ 2д )=F( χ 2д ,s), где обычно 0,95-0,99 Уровень значимости =(1 - )100 %. Значение χ 2д определяется по таблицам распределения 2. Тест пар частот состоит в том, что серия случайных чисел разбивается на пары (x1,x2), (x3,x4)… и определяются частоты mij попаданий в (i,j)-е деление квадратной таблицы mm, которая получается разбиением квадратной области (0,1) - (0,1) на n отрезков по x1 и по x2 (см. рис.1.2). 1 n mn1 …. mn2 …. mn3 …. …. …. mnn …. 3 m31 m32 m33 …. m3n 2 m21 m22 m23 …. m2n m11 m12 m13 …. m1n 1 2 3 1 0 n 1 Рис. 1.2 Результаты эксперимента приведены в табл. 1.2 и 1.3. 11 Таблица 1.2 Номер интервала 1 2 … N 1 2 … N m11 m21 … mn1 m12 m22 … mn2 … … … … m1n m2n … mnn Таблица 1.3 Номер интервала 1 2 … N 1 2 … N p*11 p*21 … p*n1 p*12 p*22 … p*n2 … … … … p*1n p*2n … p*nn Величина 2 определится по формуле 2 N (1.4) m ij 2n 2 , i , j1 и распределение 2 будет иметь n2-n степеней свободы. Если пары случайных чисел формировать по принципу (x1,x2), (x2,x3), …,(xN-1, xN), то величина 2 определится по формуле 2n 2 N 2 n2 N 2 n 2 2 N n N m ij n 2 N m i n , i , j1 n (1.4-а) n где m i m ij . j1 Проверка независимости элементов псевдослучайной последовательности квазиравномерно распределенных чисел {xi} выполняется на основе вычисления корреляционного момента [1]. 12 Определим случайные величины и , значения которых образуют последовательности {xi} и {yi}={xi+}, где – величина сдвига последовательности. Корреляционный момент дискретных случайных величин и определяется по формуле (1.5) K ( x i M[])( y j M[])p ij , i j где pij – вероятность того, что (, ) примет значение (xi, yj). Если случайные числа независимы, то K = 0. Коэффициент корреляции определим как K ( x y ) , (1.6) где x, y – среднеквадратические отклонения величин и . При проведении оценок коэффициента корреляции на ЭВМ для вычисления используется следующее выражение: N N 1 N 1 x x x x i i i i 2 N ( N ) i 1 i 1 i 1 , (1.7) D[x i ]D[x i ] где 2 N 1 N 2 1 D[x i ] x i (N ) 2 x i , N i 1 i 1 2 N 1 N 2 1 x . D[x i ] x i 2 i N i 1 (N ) i 1 При любом =1,2,… для достаточно больших значений N с доверительной вероятностью справедливо соотношение ( ) 1 / N . (1.8) Если найденные эмпирические значения () находятся в указанных пределах, то можно утверждать, что с вероятностью последовательность {xi} удовлетворяет 13 гипотезе корреляционной независимости. 1.2. Моделирование случайных событий Существуют события, которые многократно появляются при одних и тех же условиях, но чем-то отличаются каждый раз друг от друга. Для оценки событий, их отличий вводится вероятность как мера измерения. Закономерность рассеивания параметров события, выраженная функцией распределения вероятностей, носит общий характер. Если входные параметры объекта, смена состояний объекта или его выходные параметры описываются случайными распределениями вероятностей, то эти объекты относятся к классу стохастических. При моделировании поведения объектов применяется аппарат теории вероятностей, а для идентификации параметров моделей применяется аппарат математической статистики. Массовые явления или процессы характеризуются многократным повторением при постоянных условиях некоторых опытов (операций и прочее). Абстрагируясь от специальных свойств этих опытов, в теории вероятностей вводится понятие испытания (опыта). Испытанием называется осуществление определенного комплекса условий, который может быть воспроизведен сколь угодно большое число раз. Явления, происходящие при реализации этого комплекса условий (в результате испытания), называются событиями [8]. Положительное число в отрезке [0,1], представляющее собой количественную меру возможности реализации случайного события в испытании, называется его вероятностью. Вероятность появления события А обозначают символом Р(А). Вероятность понимается как идеальная мера возможности появления события. 14 Случайная величина рассматривается как функция, аргументом которой служит элементарное случайное событие. Дискретной случайной величиной называется такая, которая может принимать конечное или бесконечное счетное множество значений, например возможны значения x1,x2,…,xn, … Для каждого события xi определены вероятности P(xi). Распределение вероятностей дискретной случайной величины, представленное на рис. 1.3, рассматривают как точечное распределение вероятностей. P(x3) P(x1) P(x2) P(xn) х x1 x2 x3 …. x4 xn …. Рис. 1.3 При непрерывном распределении случайной величины вероятности распределены сплошной полосой по всей оси x или по некоторым ее участкам с определенной плотностью. Распределение вероятностей носит название теоретического распределения случайной величины. Интегральная функция распределения вероятностей определяет вероятность того, что случайная величина X меньше значения x согласно формуле x P(X < x) = f(x)dx = P(x) . (1.9) - Пример задания интегральной функции распределения вероятностей приведен на рис. 1.4. Дифференциальная функция распределения вероятностей (плотность распределения вероятностей) 15 определяет вероятность того, что случайная величина X меньше значения x согласно формуле x2 P(x < X < x ) = P(x ) - P(x ) = f(x)dxx) . 1 2 2 1 x (1.10) 1 F(x) 1 х Рис. 1.4 Пример задания дифференциальной функции распределения вероятностей приведен на рис. 1.5. f(x) х Рис. 1.5 Совокупность случайных величин X() аргумента образует случайный процесс. Течение случайного процесса описывают некоторой функцией X(), где - аргумент функции со значениями из множества . Функцию X(), наблюдаемую в некотором опыте, соблюдая определенный комплекс условий, называют выборочной функцией или реализацией случайного процесса. 16 При моделировании системы методом статистического имитационного моделирования на ЭВМ большое внимание уделяется учету случайных факторов и воздействий на систему. Рассмотрим особенности моделирования случайных событий. Пусть некоторое событие A должно наступить с вероятностью p. Чтобы реализовать случайное событие A, необходим генератор случайных чисел, определяющий значения xi случайной величины , равномерно распределенной в интервале (0, 1). Событие A будет состоять в том, что выбранное значение xi случайной величины удовлетворяет неравенству xi p. (1.11) Если вероятность наступления события A равна P(A) = p, то для противоположного события A xi>p, так как вероятность P( A ) = 1 – p. События A и A образуют полную группу событий. Процедура моделирования состоит в генерации равномерно распределенных случайных чисел xi и сравнении их со значением p. Если условие (1.11) выполняется, то событие A наступило. Если условие (1.11) не выполняется, то событие A в этом опыте не произошло (произошло событие A ). Таким же образом можно рассмотреть группу событий. Пусть A1,A2,…,As – полная группа событий, т.е. исходом испытания обязательно будет одно из этих событий. Эти события могут наступить с вероятностями p1, p2, …, ps соответственно, причем p1 + p2 + …+ ps = 1. Событие Am будет определено тем, что выбранное значение xi равномерно распределенной на отрезке (0, 1) случайной величины будет удовлетворять неравенству Lm-1 < xi Lm, (1.12) 17 k где L k p i , m=1,2,…,s, и L0=0. i 1 Вероятность наступления события Am будет равна p(Am)=Lm - Lm-1 = pm . Процедура моделирования также состоит в генерации равномерно распределенных случайных чисел xi и последовательном сравнении их с порогами Lk. Если при некотором m выполняется условие (1.12), то событие Am оказывается исходом текущего испытания. Можно сказать, что событие Am наступает при попадании случайного числа xi в область (Lm-1 , Lm] единичного отрезка (0,1), которая выбирается так, как это показано на рис. 1.6. p1 p2 p3 ps … 0 1 L0 L1 L2 Ls-1 L3 Ls Рис. 1.6 Рассмотрим модели имитации случайных событий. При подбрасывании игральной кости возможно наступление одного из шести событий, образующих полную группу событий A1, A2, A3, A4, A5, A6. При равновероятном наступлении событий соответствующие вероятности pk и пороги Lk приведены в табл. 1.4. Таблица 1.4 N Ai pi Li A1 p1=1/6 L1=1/6 A2 p2=1/6 L2=2/6 A3 p3=1/6 L3=0,5 A4 p4=1/6 L4=4/6 A5 p5=1/6 L5=5/6 A6 p6=1/6 L6=1 Пусть получено случайное число x1=0,344. Проверяем условия наступления событий. Условие L0<0,344L1 не выполняется, не выполняется также условие L1<0,344L2. 18 Условие L2<0,344L3 выполняется, т.к. 0,333<0,344<0,5, поэтому произошло событие A3 –выпало 3 очка. 1.3. Исследование модели случайных событий При имитационном моделировании получают практические (эмпирические) результаты, которые затем аппроксимируют теоретическими распределениями, т.е. выдвигают гипотезу, что теоретическое распределение аппроксимирует эмпирическое распределение. Пусть проверяется настройка станка на среднюю точку поля допуска. Проведено 280 независимых испытаний и интересующее нас событие появилось 151 раз. Модель появления независимых событий – биноминальное распределение. Если гипотетическая вероятность события р=1/2, то математическое ожидание равно Nр=280(1/2)=140, а среднеквадратичное отклонение биноминального распределения определится из формулы 1 1 Npq 280 =8,37, 2 2 где q=1-р – вероятность не появления события. Можно ли считать наблюденную частоту 151 достаточно близкой к теоретической норме 140, отвечающей гипотезе р=1/2? Чтобы получить ответ на заданный вопрос, следует выбрать границу допустимых при гипотезе отклонений частот (или частостей) от математического ожидания. Будет определено критическое отклонение, превышение которого при выдвинутой гипотезе настолько маловероятно, что его можно считать практически невозможным. Если превышение критического отклонения будет наблюдаться, то это указывает на несовместимость выдвинутой гипотезы с наблюдениями и говорят, что наблюденная частость значимо отклоняется от вероятности. Если фактическое отклонение меньше 19 критической границы, то опыт не противоречит выдвинутой гипотезе и наблюденное отклонение можно объяснить случайностью испытаний. Пусть для оценки случайной величины A, оцениваемой по результатам моделирования х, выбирается величина х*, являющаяся функцией от х. Значения х* будут отличаться от A в силу случайных факторов. Можно связать точность оценки, теоретическое значение случайной величины A и её статистическую оценку х* в виде формулы |A-х*|<, (1.13) где - точность оценки. В силу того, что каждый результат х* моделирования случайной величины A также является случайной величиной, то вероятность того, что неравенство (1.13) выполняется, будет достоверностью точности оценки х* случайной величины A, т.е. справедлива формула Р(|A-х*|<)=, (1.14) где - уровень значимости, вероятность практически невозможных отклонений. На практике задают уровень значимости . Эта вероятность обычно не превышает значение 0,05. Область больших отклонений, соответствующую уровню значимости , называют критической областью, а само правило проверки – критерием значимости. Критическую границу для отклонений от теоретической нормы можно определить, пользуясь нормальным приближением к биноминальному закону. На рис. 1.7 приведены двухсторонние критические границы для проверки гипотезы р=1/2. Вероятность 0,95 соответствует при нормированном нормальном распределении интервалу (-1,96, +1,96) около центра распределения, так как вероятность того, что абсолютная величина нормированного отклонения превысит значение 1,96, равна 0,05, т.е. 20 Р(|A|>1,96)=Р(|m-Nр|>1,96)0,05, где m – практическая частота. Уровень значимости 0,01 соответствует границе 2,58, т.е. Р(|A|>2,58)=Р(|m-Nр|>2,58)0,01. -1,96 0 +1,96 Рис. 1.7 Для рассмотренного выше примера настройки станка на среднюю точку поля допуска =8,37 и 5 %-ная критическая граница соответствует 1,968,37=16,41, а 1%-ная критическая граница соответствует 2,588,37=21,59. Таким образом, область допустимых значений при 5 % критической границы определяется пределами Nр1,96=14016,41, а при области допустимых значений при 1 % критической границы определяется пределами Nр2,58=14021,6. Если выдвинутая гипотеза, что наблюденная частота 151 достаточно близка к теоретической норме 140, отвечающей вероятности р=1/2, верна, то отклонение частоты от теоретической нормы в пяти случаях из 100 может превышать 16,4 и в одном случае из 100 может превышать 21,6. Так как в рассмотренном примере отклонение составило 151-140=11, т.е. оно находится в области допустимых значений, то нет оснований считать гипотезу р=1/2 противоречащей наблюдениям. 21 При наличии явлений рассеивания признаков случайной величины требуется провести сравнительную оценку, причем обоснованный вывод может быть получен путем научно поставленного анализа статистических данных. Данные рассматривают как выборки, информирующие о поведении случайных величин и позволяющие делать заключения о законах распределения этих величин. Существуют некоторые выборки значений случайной величины А. Необходимо сделать заключение о законах распределения случайной величины А. Можно сделать предположение, что тип закона распределения известен (нормальный, пуассоновский и т.д.), но неизвестны его параметры, т.е. проверка гипотезы сводится к сравнению статистических характеристик, оценивающих параметры выбранных законов распределения. Для проверки гипотезы согласно критерию значимости выбираются надлежащие уровни значимости =5 %, 2 %, 1 % и т.д., отвечающие событиям, которые при данном исследовании считаются практически невозможными. Затем определяется критическая область (рис. 1.7) данного критерия, вероятность попадания в которую в точности равна уровню значимости , если гипотеза верна. Значения критерия, лежащие вне критической области, образуют дополнительную к ней область допустимых значений (незаштрихованная область на рис. 1.7). Если /100 – уровень значимости, то вероятность попадания критерия в область допустимых значений при справедливости выдвинутой гипотезы равна 1-/100. Если значение критерия, вычисленное по произведенным наблюдениям (опытам), окажется в критической области, то гипотеза отвергается. Если значение критерия окажется в области допустимых значений, то наблюденное значение критерия не противоречит гипотезе. 22 Чем меньше уровень значимости, тем меньше вероятность забраковать проверяемую гипотезу, когда она верна, т.е. совершить ошибку первого рода. С уменьшением уровня значимости понижается чувствительность критерия, так как расширяется область допустимых значений и увеличивается вероятность совершения ошибки второго рода, т.е. принятия проверяемой гипотезы, когда она не верна. Уровень значимости критерия проверки контролирует лишь ошибки первого рода и не измеряет степень риска, связанного с принятием неверной ошибки. При заданном уровне значимости можно устанавливать критическую область, гарантирующую этот уровень. Например, в качестве критерия рассматривается некоторый показатель, распределенный при проверяемой гипотезе нормально с плотностью распределения f(x;a;). В качестве критической области, соответствующей уровню значимости =5 % можно принять: - область больших положительных отклонений так, что Р(tq)=Р(x>a+tq)=0,05, но 2 z 1 1 2 P1 (t q ) e dz = - Ф0 (t q ) , 2 2 tq (1.15) тогда из таблицы значений нормированной функции Лапласа z 2 v 1 Ф0 (z) e 2 dv 2 0 определим, что tq=1,65; - область больших отрицательных отклонений Р2(tq)=Р(x<a-tq)=Р(x<a-1,65); - область больших по абсолютной величине отклонений Р3(tq)=Р(|x-a|>tq)=0,05, 23 определив t из соотношения 2 z 2 1 P(| x - a |> t q) 1e 2 dz = - Ф0 (t q ) , (1.16) 2 2 tq так что tq=1,96; - область малых по абсолютной величине отклонений Р4(tq)=Р(|x-a|>tq)=2Ф0(z), (1.17) так что tq0,063. Эти области показаны на рис. 1.8. f(x,a, Значение х критерия проверки гипотезы 4 0 3 3 a 2 -1,96 +1,96 1 1 – область больших положительных отклонений; 2 - область больших отрицательных отклонений; 3 - область больших по абсолютной величине отклонений (состоит из двух половин); 4 - область малых по абсолютной величине отклонений Рис. 1.8 При обработке результатов имитационного моделирования (статистических данных) вид закона 24 распределения является гипотетическим и нуждается в статистической проверке, т.е. задача о критерии проверки гипотезы по данным выборки состоит в том, что случайная величина Х подчинена закону распределения Р(х). Эти критерии, называемые критериями соответствия, основаны на выборе определенной меры расхождения между теоретическим и эмпирическим распределениями. Если такая мера расхождения для рассматриваемого случая превосходит установленный предел, то гипотеза не подтверждается. Рассмотрим наиболее употребительный критерий 2 (критерий Пирсона). Пусть гипотеза предполагает вид функции распределения Р(х). Вся область изменения случайной величины Х разбита на конечное число k множеств 1, 1, …, k. Если случайная величина Х непрерывна, то множества 1, 1, …, k представляют собой интервалы, а если случайная величина Х дискретна, то множества 1, 1, …, k представляют собой группы отдельных значений случайной величины Х. Пусть pi вероятность того, что значения случайной величины Х при данном распределении Р(х) принадлежат интервалу i. Объем выборки N, а mi - число значений случайной величины Х в выборке O(x1, x2, x3, …, xN), попавших в интервал i. Очевидно, что p1+p2+ …+pk=1, (1.18) m1+m2+ …+mk=N. (1.19) Если проверяемая гипотеза верна, то mi представляет частоту появления события, имеющего в каждом из N произведенных испытаний вероятность pi. В таком случае mi можно рассматривать как случайную величину, подчиненную биномиальному закону распределения с центром в точке Npi и средним квадратическим 1 Npi (1 p i ) . Если N достаточно велико, то можно считать, что частота распределена асимптотически 25 нормально с центром в центре в точке Npi и средним квадратическим 1 Npi (1 p i ) . Если проверяемая гипотеза верна, то можно ожидать, что в совокупности будут асимптотически нормально распределены случайные величины (m i Np i ) , (i=1,2,…,k), (1.20) i Np i связанные между собой соотношением k k (m Npi ) i pi i , (1.21) N i 1 i 1 вытекающим из условий (1.18) и (1.19). В качестве меры расхождения данных выборки (эмпирических частот) m1, m2, …, mk с теоретическими частотами Np1, Np2, …, Npk рассмотрим величину k k (m Npi )2 2 i2 i . (1.22) Npi i 1 i 1 Для практических приложений можно применять подобное равенство: k m i2 2 N. (1.23) i 1 Npi Согласно формуле (1.22) случайная величина 2 представляет собой сумму квадратов асимптотически нормально распределенных случайных величин, связанных линейной зависимостью (1.21). Из теории вероятностей известна теорема. Если проверяемая гипотеза верна, то критерий 2, определяемый по формуле (1.22), имеет распределение, стремящееся при N к распределению 2 с k-1 степенями свободы. При проведении проверки задают уровень значимости % для критерия. 26 Пусть 2 обозначает %-ный предел для закона распределения 2 с k-1 степенями свободы. Этот закон имеет табличное задание и его значения приводятся в приложениях книг с изложением теории вероятностей. Если гипотеза верна, то при достаточно большом числе опытов N справедливо определение вероятности Р( 2 2 ) . 100 (1.24) После определения случайной величины 2 по данным выборки O(x1, x2, x3, …, xN), будет выполняться одно из двух условий: - при 2 2 критерий попадает в критическую область и, следовательно, расхождение выборочных данных с гипотетическим допущением о законе распределения случайной величины существенно, гипотеза отвергается; - при 2 2 несущественно расхождение выборочных данных с гипотетическим допущением о законе распределения, гипотеза принимается. Во втором случае в % всех случаев, но неизвестно каких, гипотеза неверна. Принято считать достаточным нормальное приближение для практических расчетов, если Npi10 i. Если есть группы со значениями Npi, меньшими 10, то рекомендуют соседние группы объединять так, чтобы новые группы удовлетворяли условию Npi10 i. Если число степеней свободы k>30, то соответствующего значения случайной величины 2 нельзя найти в табличном задании закона распределения 2. В этом случае применяют следующую приближенную формулу: 2 1 ( 2 1 z 2 ) 2 , 2 (1.25) 27 основанную на том, что 2 2 оказывается асимптотически нормальным законом N( z; ( 2 1;1) , z2 - есть 2 % предел абсолютного уклонения нормальной переменной, заданный в табличных приложениях книг по теории вероятностей. Любая имитационная модель должна давать результаты, согласующиеся с результатами, полученными в теории. При моделировании события A требуется оценить вероятность P(A) его наступления по результатам некоторого числа N опытов с моделью. Выше определено, что оценкой вероятности P(A) является частость p*(A)=m / N наступления события A при N реализациях. Таким образом, для оценки вероятности появления события Ai требуется знать число опытов N и количество случаев наступления события mi. Эти данные для рассмотренной в разд. 1.2 модели можно представить так, как показано в табл. 1.5. Таблица 1.5 N 1 2 3 4 5 6 Ai A1 A2 A3 A4 A5 A6 N = Nзад mi m1 m2 m3 m4 m5 m6 p*i p*1 p*2 p*3 p*4 p*5 p*6 Количество реализаций для оценки вероятности p с точностью можно определить по формуле [3] p(1 p) , (1.26) N t 2 2 где t>0 выбирается из таблиц нормального распределения с нулевым матожиданием и единичной дисперсией при заданном уровне достоверности , причем используется соотношение Ф(ta)=0,5(1-). 28 Величину необходимо выбирать в долях оцениваемой вероятности, <0,1p. При известном распределении вероятностей событий P(Ai) и достаточно большом числе опытов N согласованность экспериментальных и теоретических результатов проверяется по критерию согласия Пирсона (2). Рассмотрим величину s (m Np i ) 2 2 i . (1.27) Np i i 1 Если проверяемая гипотеза о том, что события Ai имеют вероятность pi, верна, то эта величина при больших значениях N имеет распределение, близкое к 2 распределению с s-1 степенями свободы. Чтобы определить правило проверки, необходимо выбрать уровень значимости для критерия или доверительную вероятность . Проще всего, зная функцию распределения F(2,s), д определить такое значение , которому бы соответствовало значение доверительной вероятности 2 =P(2< д )=F( д ,s), где обычно =0,95-0,99. Уровень 2 2 значимости =(1-)100%. Значение д определяется по таблицам распределения 2. Все данные для расчета по формуле (1.27) берутся из табл. 1.4 и 1.5. Доверительный интервал для оценки вероятности p определяется по формуле [2] m t m(N m) / N Np m t m(N m) / N . (1.28) Если при подстановке в (1.28) теоретической вероятности p условие (1.28) не выполняется, то модель неадекватна или проведено недостаточное число испытаний. В табл. 1.6 приведены значения t для расчетов по формулам (1.26) и (1.28). 2 29 Таблица 1.6 0,001 0,002 0,005 t 3,291 3,09 2,807 0,01 0,015 0,02 t 2,576 2,432 2,326 0,025 0,03 0,05 t 2,241 2,17 1,96 Так как для имитации случайных событий применяется некоторый генератор равномерно распределенных случайных чисел, то качество этого генератора также должно быть проверено перед проведением исследований. 1.4. Моделирование сложных событий Пусть событие B состоит в одновременном наступлении событий A1, A2,…, Ak. Таким образом, проведение опыта заключается в моделировании k случайных событий. Вероятность того, что событие B произойдет в результате данного опыта, равна P(B)=P(A1A2…Ak). В том случае, когда события A1,…,Ak независимы, получаем P(B)=P(A1)P(A2)…P(Ak). (1.29) В том случае, если события A1, A2,…, Ak зависимые, то вероятность сложного события B нельзя определять по формуле (1.29). С ростом числа зависимых событий k сложность расчета увеличивается, поэтому для определения вероятности наступления сложного события может быть использовано имитационное моделирование. Схема моделирования заключается в построении алгоритма получения элементарных событий Ai и моделировании наступления события B по результатам k испытаний элементарных событий. Зависимости между событиями реализуются в моделирующем алгоритме. Рассмотрим последовательность моделирования сложных событий на примере классического игрального автомата. 30 Игральный автомат состоит из трех барабанов, каждый из которых моделирует наступление элементарного события Aji, где j=1,2,3 – номер барабана, i=1,2,…,6 – номер исхода испытания. Обычно события нумеруются по номерам исходов I=1,2,3,4,5,6. Таким образом, работа автомата заключается в выполнении трех опытов по получению случайных величин Aj, а случайная величина Aj может принимать шесть значений Aj1,…Aj6. Вероятности P(Aji) обычно принимаются не равными друг другу, но события Aj предполагаются независимыми. Пусть сложное событие Bk, k=1,2,…,6, состоит в одновременном наступлении событий A1k, A2k, A3k. Целью исследования является определение вероятности наступления событий Bk=P(A1kA2kA3k)=P(A1k)P(A2k)P(A3k). Разработаем имитационную модель автомата. Разобьем каждый барабан на 10 ячеек равной длины. Каждой из ячеек присвоим номер Aj(i), соответствующий номеру исхода. Вероятности выпадения ячеек будут равны pi=0,1; i=1,2,…,10. Так как число ячеек больше числа исходов, то вероятности исходов испытаний будут определяться разметкой ячеек. Пример задания модели приведен в табл. 1.7 – 1.9. Таблица 1.7 i A1(i) p1j A2(i) P2j A3(i) P3j 1 1 0,1 2 0,1 3 0,1 2 2 0,1 1 0,1 4 0,1 3 1 0,1 3 0,1 2 0,1 4 3 0,1 2 0,1 1 0,1 5 2 0,1 4 0,1 2 0,1 6 1 0,1 2 0,1 3 0,1 7 4 0,1 1 0,1 1 0,1 8 6 0,1 5 0,1 6 0,1 9 5 0,1 6 0,1 5 0,1 10 2 0,1 1 0,1 1 0,1 31 Таблица 1.8 A1 I(A1) p(A1j) A2 I(A2) p(A2j) A3 I(A3) p(A3j) A11 1 0,3 A21 1 0,3 A31 1 0,3 A12 2 0,3 A22 2 0,3 A32 2 0,3 A13 3 0,1 A23 3 0,1 A33 3 0,1 A14 4 0,1 A24 4 0,1 A34 4 0,1 A15 5 0,1 A25 5 0,1 A35 5 0,1 A16 6 0,1 A26 6 0,1 A36 6 0,1 Таблица 1.9 Bi B1 B2 B3 B4 B5 B6 I(A1),I(A2), I(A3) p(Bi) 1,1,1 2,2,2 3,3,3 4,4,4 5,5,5 6,6,6 0,027 0,027 0,001 0,001 0,001 0,001 Моделирование элементарных событий A1, A2, A3 выполняется согласно методике, рассмотренной в предыдущих разделах. Событие Bi наступает в текущем опыте, если в этом опыте наступают события A1i, A2i, A3i и при этом счетчик частоты события m[Bi] увеличивается на единицу. Результаты моделирования представлены в табл. 1.10 и 1.11, где mij – частота наступления исхода Aij (счетчик числа исходов), p*ij – частость события Aij, определяемая как p*ij = Aij / N. Число опытов N одинаково для всех случайных величин в эксперименте, заданное число испытаний Nзад определяется по формуле (1.26) для наименьшей по величине из оцениваемых вероятностей событий B1,…,B6. 32 Таблица 1.10 A1 m(A1) p*(A1j) A2 m(A2) p*(A2j) A3 m(A3) P*(A3j) A11 m11 P*11 A21 m21 P*21 A31 m31 P*31 A12 m12 P*12 A22 m22 P*22 A32 m32 P*32 N = Nзад A13 m13 P*13 A23 m23 P*23 A33 m33 P*33 A14 m14 P*14 A24 m24 P*24 A34 m34 P*34 A15 m15 P*15 A25 m25 P*25 A35 m35 P*35 A16 m16 P*16 A26 m26 P*26 A36 m36 P*36 Таблица 1.11 Bi n(B) P*(Bi) B1 n1 P*B1 B2 n2 P*B2 N = Nзад B3 n3 P*B3 B4 n4 P*B4 B5 n5 P*B5 B6 n6 P*B6 Достоверность статистической модели событий A1, A2, A3 оценивается по критерию 2 с доверительной вероятностью =0,95-0,99. Точность оценок вероятностей наступления сложных событий Bi определяется точностью модели элементарных событий. Пусть событие Bk состоит в том, что в результате эксперимента произойдет одно из нескольких событий Ai. Вероятность наступления события Bk равна сумме вероятностей соответствующих элементарных событий Ai. Например, вероятность события B, состоящего в том, что выпавшее число очков на игральной кости больше либо равно четырем, определится как P(B)=P(A4)+P(A5)+P(A6), так как выше определили, что события Ai образуют полную группу событий. Обозначим A(k) - множество элементарных событий, определяющих возникновение события Bk. 33 Рассмотрим как пример модель рулетки. Колесо рулетки разбито на 37 секторов, каждый из которых обозначен числом (0-36) и цветом (красное и черное, кроме 0). Разбиение показано на рис. 1.9. 3 6 9 12 15 18 21 24 27 30 33 36 0 2 5 8 11 14 17 20 23 26 29 32 35 1 4 7 10 13 16 19 22 25 28 31 34 Рис 1.9 Полная группа элементарных событий A={A0,A1,…,A36}. В результате опыта наступает одно из событий группы A. Элементарные события выделяют в различные группы, например красные, черные, четные, нечетные и т.п. Эти группы образуют сложные события Bk. В ходе эксперимента будем рассматривать вероятности исходов сложных событий Bk, которые и определяют риск при игре в рулетку. Пример задания модели при равных вероятностях событий приведем в табл. 1.12. Примеры задания сложных событий приведем в табл. 1.13. Таблица 1.12. A I(A1) p(A1j) A0 0 1/37 A1 1 1/37 A2 2 1/37 … … 1/37 A35 35 1/37 A36 36 1/37 События B0-B36; B0, B37 и B38; B0, B39 и B40 также образуют полные группы событий. Моделирование элементарных событий A0, A1,…, A36 выполняется согласно методике, рассмотренной в предыдущих разделах. Событие Bk наступает в текущем опыте, если в этом опыте наступают события A1i, A2i, A3i, и при этом счетчик частоты события m[Bk] увеличивается на единицу. 34 Таблица 1.13. Bk B0 Значение число B37 красное B38 черное B39 четное B40 нечетное … … Элементарные события A(k) A0 A1 + A3 + A5 + A7 + A9 + A12 + A14 + A16 + A18 + A19 + A21 + A23 + A25 + A27 + A30 + A32 + A34 + A36 A2 + A4 + A6 + A8 + A10 + A11 + A13 + A15 + A17 + A20 + A22 + A24 + A26 + A28 + A29 + A31 + A33 + A35 A2 + A4 + A6 + A8 + A10 + A12 + A14 + A16 + A18 + A20 + A22 + A24 + A26 + A28 + A30 + A32 + A34 + A36 A1 + A3 + A5 + A7 + A9 + A11 + A13 + A15 + A17 + A19 + A21 + A23 + A25 + A27 + A29 + A31 + A33 + A35 … P(Bk) 1/37 18/37 18/37 18/37 18/37 … Результаты моделирования представлены в табл. 1.14 и 1.15, где mi – частота наступления события Ai, p*i – частость события Ai, определяемая как p*i = Ai / N. Таблица 1.14 A M(Ai) P*(Aj) A0 m0 P*0 A1 m1 P*1 N = Nзад A2 m2 P*2 … … … A35 m35 P*35 A36 m36 P*36 Таблица 1.15 Bi N(Bi) P*(Bi) B0 n0 P*B0 B1 n1 P*B1 N = Nзад … n2 P*B2 B39 n39 P*B39 B40 n40 P*B40 … … … 35 Число опытов N одинаково для всех случайных величин в эксперименте, заданное число испытаний Nзад определяется по формуле (1.26) для наименьшей по величине из оцениваемых вероятностей событий B1,В2,…. Достоверность статистической модели событий A0, A1,…, A36 оценивается по критерию 2 с доверительной вероятностью =0,95-0,99. Часто возникает необходимость оценить вероятность возникновения некоторой последовательности событий. Если исходы событий независимые, то вероятность последовательности событий P(B1,B2,…,Bm)=P(B1)P(B2)…P(Bm). Например, в рассмотренном примере с рулеткой вероятность выпадения серии «красное» длиной m равна p(m)=(18/37)m. 1.5. Программные приложения для задач моделирования Программная система для решения задач моделирования включает в себя набор программ генерации случайных чисел, имитации случайных факторов, простых и сложных событий. 1.5.1. Программа генерации случайных чисел. Окно программы, реализующей генератор равномерно распределенных случайных чисел, показано на рис. 1.10. Константы генератора могут быть заданы произвольно. Равномерность получаемой последовательности случайных чисел можно исследовать визуально по гистограмме и путем обработки статистических данных (тест частот и тест пар частот). В программе также реализованы генераторы равномерно распределенных случайных чисел, приведенные в прил. 1. 36 Рис. 1.10 Перед проведением эксперимента необходимо задать исходные данные: тип генератора случайных чисел, метод проверки и параметры проверки (см. рис. 1.11). В этом окне настраивается число интервалов разбиения единичного отрезка m для теста частот и теста пар частот, число отсчетов n для корреляционного теста, определяющее максимальное значение сдвига последовательности , число опытов N. В качестве «плохого» генератора реализована последовательность вида Xk+1=1+0,5sin[Xk(232-1)], позволяющая получать псевдослучайные числа в диапазоне [0,1] с неравномерным законом распределения. Окно программы для выполнения тестов качества случайных чисел представлено на рис. 1.12 и 1.13. 37 Рис. 1.11 Рис. 1.12 38 Рис. 1.13 При выполнении теста программа запрашивает число опытов N, как это показано на рис. 1.14. Рис. 1.14 Двойным нажатием на график корреляционного теста можно получить подробные данные, как это показано на рис. 1.15. Порядок работы с программой следующий: 39 1. По заданию преподавателя ввести параметры генератора случайных чисел. 2. Выбрать число интервалов разбиения единичного отрезка для теста пар частот и число интервалов для теста пар частот. 3. Провести серию испытаний. 4. Оценить достоверность модели по критерию 2 для теста частот и теста пар частот. Рис. 1.15 5. Оценить корреляционную независимость генератора. 6. Ввести произвольные значения параметров. 7. Повторить действия по пп. 3-6. 8. Сравнить результаты и сделать выводы о влиянии параметров на характеристики генератора. 9. Провести анализ генераторов случайных чисел по одному или нескольким критериям. 10. Сравнить оценки достоверности и сделать выводы о качестве генераторов. 11. Исследовать корреляционные характеристики генераторов случайных чисел. 40 1.5.2. Программа имитации простых событий. Окно программного приложения для имитации простых событий приведено на рис. 1.16. Программа моделирует бросание игральной кости с использованием одного из реализованных в программе генераторов случайных величин. Программа содержит теоретическое введение и математическую модель, демонстрирующую выбор исхода события, составляющего полную группу событий. Вероятности событий можно задавать произвольно. Рис. 1.16 Результаты моделирования приведены в таблице и на гистограмме. Для оценки достоверности по критерию 2 необходимо воспользоваться «калькулятором 2 распределения » (рис. 1.17), для чего сначала определить 41 число степеней свободы и рассчитать величину 2 по опытным данным. Рис. 1.17 Порядок работы с программой следующий: 1. Выбрать генератор равномерно распределенных случайных чисел. 2. Ознакомиться с принципом имитации элементарных случайных событий. 3. Ввести число опытов N и выполнить моделирование. 4. Оценить расхождение экспериментальных оценок и теоретических вероятностей по критерию 2 и сделать выводы об адекватности статистической имитационной модели. 5. Изменить значения вероятностей элементарных событий и выполнить пп. 3,4, сравнить результаты. 1.5.3. Программа-тест по имитации простых событий. Для демонстрации работы алгоритма имитации простых событий разработана программа-тест (рис. 1.18). Для работы с программой необходимо повторить основные положения метода имитации простых случайных событий. Алгоритм генерации случайного события задается как последовательность шагов. В программе имитируется бросание игральной кости, моделируемое событие A будет иметь шесть исходов A1,A2,…,A6. 42 Рис. 1.18 Шаг 1. Задать вероятности событий Pi. Вероятности задаются числами в формате “0,0”,”0.0”,”5/6”. Сумма вероятностей должна быть равна единице. Шаг 2. Задать границы интервалов разбиения единичного отрезка. Если значение границы введено неправильно, соответствующее поле подсвечивается. Шаг 3. Инициализировать генератор случайных чисел, для чего задать некоторое число в диапазоне от 0 до 4 294 967 296. Можно получить значение автоматически (текущее значение таймера). Шаг 4. Получить случайное число, равномерно распределенное на интервале [0,1]. В программе 43 используется генератор вида xk=(axk-1+c)modM, a=1 664 525, c=1 013 904 223, M=4 294 967 295. Шаг 5. Определить номер интервала, в который попадает случайное число. Интервалы были определены на шаге 2. Шаг 6. Определить номер события i по номеру интервала. Шаг 7. Выполнить некоторое действие. Если на каком-либо шаге была допущена ошибка, программа выдаст соответствующее предупреждение. 1.5.4. Программа имитации сложных событий. Окно программного приложения, в котором реализована описанная выше модель игрального автомата, приведено на рис. 1.19. Рис. 1.19 Пользователь задает число испытаний, запускает модель и получает результаты, представленные в виде таблиц, содержащих данные из табл. 1.8 - табл. 1.11. События 44 A1,…,A6 обозначены картинками так, как это показано на рис. 1.20. 1 2 3 4 5 6 Рис. 1.20 Результаты оценки вероятностей сложных событий Bi приведены на вкладке «K» (комбинации значений), как это показано на рис. 1.21. Рис. 1.21 В табл. 1.16 приведены обозначения действий. Таблица 1.16 Начать процесс моделирования Сбросить статистику Статистика по первому событию (первый барабан) Статистика по второму событию (второй барабан) Статистика по третьему событию (третий барабан) Статистика комбинаций Выбрать параметры модели Выйти из программы 45 Кроме того, программа предлагает посоревноваться с ЭВМ в угадывании выпавших комбинаций, как обычная игра. Распределение исходов по ячейкам и вероятности pi задаются пользователем в окне настройки (рис. 1.22). При нажатии кнопки с соответствующим изображением в ячейках автомата задаются соответствующие исходы событий. При нажатии «+» или «-» вероятность выпадения ячейки увеличивается (уменьшается) на 0,01, но таким образом, чтобы сумма вероятностей по всем ячейкам каждого барабана P(1), P(2), P(3) не превышала единицы. Рис. 1.22 Порядок работы с программой следующий: 1. Ознакомиться с моделью игрального автомата. 46 2. Задать исходное распределение вероятностей исходов элементарных событий и определить вероятности сложных событий. 3. Выполнить пробные испытания с целью ознакомления с работой алгоритмов. 4. Задать число N и выполнить серию экспериментов. 5. Оценить по критерию 2 адекватность моделирования элементарных событий. 6. Задать произвольно распределение вероятностей исходов элементарных событий, выполнить серию опытов и сравнить результаты. 7. Сделать выводы. 1.5.5. Имитационная модель рулетки. Окно программного приложения, реализующего имитационную модель рулетки, приведено на рис. 1.23. Обозначения действий показаны в табл. 1.17. Таблица 1.17. Начать процесс моделирования Выполнить несколько опытов Сбросить ставки Сбросить статистику Смотреть графики Смотреть таблицу статистических данных Выбрать параметры модели Выйти из программы Программа может работать как обычная игра «рулетка», в которой можно делать ставки, исходя из текущей суммы средств. При этом исход каждой игры фиксируется в статистических данных. Для исследования модели 47 необходимо набрать статистику (рис. 1.24), для чего следует выполнить несколько опытов. Рис. 1.23 Рис. 1.24 Статистика моделирования отображается в таблице (рис. 1.25). Показано число исходов m[i] и частость событий P*[i]. На рис. 1.26 показано графическое отображение статистики. 48 Дополнительно в окне (рис. 1.26) отображается статистика выпадения определенной последовательности. В данном случае «красное» и «черное». Показано число событий, состоящих в получении последовательности длины n. Рис. 1.25 Вероятности pi задаются пользователем в окне настройки. На рис. 1.27 применены следующие обозначения: - «0» – установить вероятность в 0; - «*» - установить вероятность, чтобы сумма была равна 1; - «+» - немного увеличить вероятность; - «-» - немного уменьшить вероятность. Порядок работы с программой следующий: 1. Ознакомиться с моделью рулетки. 49 Рис. 1.26 Рис. 1.27 50 2. Задать исходное распределение вероятностей исходов элементарных событий, задать 10 сложных событий Bk и определить вероятности сложных событий. 3. Выполнить пробные испытания с целью ознакомления с работой алгоритмов. 4. Задать число N и выполнить серию экспериментов. 5. Оценить по критерию 2 адекватность моделирования элементарных событий. 6. Задать произвольно распределение вероятностей исходов элементарных событий, выполнить серию опытов и сравнить результаты. 7. Определить вероятности появления последовательности событий и сравнить с результатами экспериментов. 8. Сделать выводы. Контрольные вопросы 1. Какие существуют методы генерации случайных чисел? 2. Почему получаемые в работе случайные числа называются псевдослучайными? 3. Как проверить качество генератора случайных чисел? 4. Как можно имитировать наступление элементарного события из полной группы событий? 5. Как имитировать наступление сложного события? 6. Как выбрать необходимое число опытов для достижения заданной точности оценок? 7. Как проверить адекватность статистической имитационной модели? 51 2. ГЕНЕРАЦИЯ НЕПРЕРЫВНЫХ СЛУЧАЙНЫХ ВЕЛИЧИН И СЛУЧАЙНЫХ ПРОЦЕССОВ 2.1. Генераторы непрерывных случайных величин В отличие от дискретных случайных величин, принимающих только определенные значения, непрерывные случайные величины могут принимать любые значения на всей области определения x. Для описания непрерывных случайных величин используется функция распределения вероятности. Пусть Х - случайная величина, принимающая значение х. Функция распределения вероятности определяется следующим образом: FX(x)=P{Xx}. (2.1) Функция распределения случайной величины определяет вероятность появления ее значений: P{x1<x<x2}=F(x2)-F(x1) (2.2) и обладает следующими свойствами: 0FX(x)1 при -<x<+, FX(-)=0, FX(+)=1. Плотностью распределения случайной величины называется производная функции распределения: dF ( x) f ( x) . (2.3) dx Плотность распределения также может быть использована для вычисления вероятности непрерывных случайных величин: P{x 1 x x 2 } x2 f (x)dx ; x1 f (x)dx 1 . (2.4) 52 При построении моделирующих алгоритмов необходимо формировать последовательности значений непрерывных случайных величин с заданным законом распределения. Случайная величина задается функцией распределения или плотностью распределения вероятностей. Все алгоритмические методы генерации непрерывных случайных величин основываются на алгоритмах генерации равномерно распределенных псевдослучайных чисел, рассмотренных нами в разд. 1. 2.1.1. Метод обратных функций предполагает, что может быть задана аналитически функция x=F-1(P), обратная к функции распределения P=F(x). Иллюстрация метода приведена на рис. 2.1. Рис 2.1 Алгоритм получения случайного числа состоит в следующем. Шаг 1. Генерируем равномерно распределенное на интервале [0,1] число P одним из рассмотренных алгоритмов. 53 Шаг 2. Определяем случайное число x=F-1(P). 2.1.2. Метод исключения является универсальным методом получения случайных чисел с заданным законом распределения. Для его работы требуется знать функцию плотности распределения случайной величины f(x), ее максимум fmax и область значений случайной величины [xmin, xmax]. Иллюстрация метода исключений приведена на рис. 2.2. Рис. 2.2 Алгоритм получения случайного числа следующий. Шаг 1. Генерируем равномерно распределенное интервале [0,1] число P1. Шаг 2. Определяем число x по формуле x=xmin+(xmax-xmin)P1. Шаг 3. Генерируем равномерно распределенное интервале [0,1] число P2. Шаг 4. Определяем число y по формуле y=P2fmax. на на 54 Шаг 5. Если выполняется условие yf(x), то x принимаем как очередное случайное число, иначе x отбрасываем и переходим к шагу 1. В методе исключений для получения N случайных чисел в среднем требуется сгенерировать 2N(xmax-xmin)fmax равномерно распределенных случайных чисел. 2.1.3. Метод кусочной аппроксимации строится следующим образом. Определяется число интервалов разбиения n. Область значений случайной величины [xmin, xmax] разбивается на n непересекающихся интервалов (c1i,c2i) таким образом, чтобы вероятности попадания значения случайной величины в каждый интервал были равны pi=1/n. Иллюстрация метода кусочной аппроксимации приведена на рис. 2.3. Рис. 2.3 Далее случайные числа получаются согласно алгоритму. 55 Шаг 1. Генерируем равномерно распределенное на интервале [0,1] число P1. Шаг 2. Определяем номер интервала k как случайное событие, произошедшее с вероятностью p=1/n. Шаг 3. Генерируем равномерно распределенное на интервале [0,1] число P2. Шаг 4. Определяем число x по формуле x=c1k+(c2k-c1k)P2. В методе кусочной аппроксимации для получения одного значения случайной величины требуются два обращения к датчику равномерно распределенных случайных чисел. Расчеты, связанные с вычислением функции распределения, выполняются до начала работы алгоритма. 2.1.4. Использование предельных теорем. Случайные величины, имеющие нормальный закон распределения, довольно часто используются в исследованиях. Для генерации нормально распределенной случайной величины могут быть использованы центральные предельные теоремы. Значение x случайной величины определяется как сумма достаточно большого количества равномерно распределенных случайных чисел по следующему алгоритму. 12 Шаг 1. Определяется величина ( 2Pi 1) , где Pi – i 1 псевдослучайные числа, равномерно распределенные на интервале [0,1]. Шаг 2. Определяется значение x=0,5+a, где a и – параметры нормального распределения. В табл. 2.1 приведены наиболее распространенные законы распределения непрерывных случайных величин и их характеристики – математическое ожидание Mx, дисперсия Dx, максимум плотности распределения fmax [4]. 56 Таблица 2.1 1. Равномерное распределение Mx=(a+b)/2, 1 /( b a), a x b , f ( x) Dx=(a-b)2/12, 0, x a, x b fmax=1/(b-a) F(x)=(x-a)/(b-a) 2. Экспоненциальное распределение Mx=1/, 0, x 0 , f ( x) x Dx=1/2, e fmax= при x=0 F(x)=1–ex, x0 3. нормальное распределение Mx=a, Dx=2, ( x a ) 2 1 2 1 f ( x) e 2 f m ax при x=a 2 2 4. Распределение Рэлея f ( x) x 2 e F( x ) 1 e M x 2 2 , 2Mx , Dx 2 fmax=e-0.5/ при x= x2 2 2 , x2 2 2 , 5. Распределение Коши 1 f ( x) , ( x a) 2 2 F( x ) 1 1 xa arctg 2 6. Распределение Эрланга a m x m 1 ax f ( x) e , x0, (m 1)! m 1 ax F( x ) 1 k 0 e (ax) k k! Mx, Dx не существуют, 1 f max при x=a Mx=m/a, Dx=m/a2, fmax=f(xmax), m 1 x m ax a 57 2.1.5. Генерация случайных величин, равномерно распределенных на интервале. Для получения равномерно распределенных чисел в произвольном диапазоне наиболее экономичным будет генератор с масштабированием равномерно распределенной случайной величины. Так как базовый генератор, применяемый при моделировании, дает случайные числа Pi в диапазоне [0,1], то, применяя преобразование xi=a+(b-a)Pi, (2.5) получаем требуемую последовательность чисел, равномерно распределенных на интервале [a,b]. Если известны матожидание и дисперсия равномерно распределенной величины, то используется преобразование (2.6) x i M x 3Dx 2Pi 3Dx . 2.2. Моделирование потоков событий Для описания воздействий случайного характера на систему могут быть использованы модели различного вида. Для систем автоматического управления характерны воздействия в виде непрерывных случайных функций. Такие воздействия описываются математическими моделями стационарных и нестационарных случайных процессов. Воздействия могут носить дискретный характер, т.е. происходить в случайные моменты времени и иметь случайную длительность, что характерно для систем обслуживания и систем передачи данных. Такие воздействия могут быть описаны математическими моделями потоков случайных событий. Поток событий характеризуется начальным моментом времени t0, моментами времени ti наступления событий и интервалами времени i между событиями, как это показано на рис. 2.4. 58 Рис. 2.4 Чтобы описать поток случайных событий, следует задать функции или плотности распределения fi(x) для каждого i. Такое описание получается слишком громоздким. Задачу можно упростить, если предположить, что поток обладает свойствами стационарности, ординарности и отсутствия последействия. Характеристики стационарного потока не зависят от выбора t0. Если поток ординарный, то можно выбрать малый период времени t такой, что за этот период произойдет не более одного события. Если у потока отсутствует последействие, то вероятность появления события на любом отрезке времени [t1 ,t2] не зависит от событий, уже произошедших до момента времени t<t1. Всеми тремя свойствами обладает простейший поток (поток Пуассона). Для этого потока вероятность наступления k событий за время t определится как ( t ) k t Pk (t ) e , (2.7) k! а плотность распределения интервала между событиями i и функция распределения определяются как a( t ) e t , A ( t ) 1 e t , (2.8) где – параметр, называемый интенсивностью потока, а величина 1 / характеризует среднее значение интервала между событиями. Модель потока с последействием описывается распределениями Эрланга. Поток Эрланга r-го порядка 59 характеризуется плотностью вероятности между соседними заявками ( t ) r t a r (t ) e . (2.9) r! Поток Эрланга r-го порядка может быть получен путем “просеивания” Пуассоновского потока с интенсивностью . Например, при r=2 рассматривается каждое второе событие, при r=3 – каждое третье и т.п. Для моделирования простейшего потока событий может быть использован следующий алгоритм. Шаг 1. Задаем момент времени t0. Шаг 2. Определяем момент времени появления следующего события ti=ti-1+i, где i - значение случайной величины, имеющей экспоненциальное распределение с параметром . Шаг 3. Рассматриваем момент времени ti как текущий и переходим к шагу 2. Такой алгоритм моделирования называется алгоритмом с выделенными состояниями, так как в нем не рассматриваются процессы в системе на интервале между событиями. Для сложных систем может быть использован метод t-моделирования, согласно которому состояние системы рассматривается в последовательные моменты времени kt. Второй алгоритм моделирования потока событий с произвольным распределением интервала между событиями имеет следующий вид. Шаг 1. Если счетчик длительности интервала m=0, то получить значение x случайной величины с заданным законом распределения и перейти к шагу 2, иначе перейти к шагу 3. Шаг 2. Задать значение m=x/t, где m - ближайшее целое число. 60 Шаг 3. Значение m=m-1, если m0, то на текущем шаге произошло событие, и момент наступления события регистрируется. Шаг 4. Далее перейти к шагу 1. Для моделирования Пуассоновского потока может быть использовано свойство ординарности. Рассматриваем случайное событие A, состоящее в том, что на интервале t произойдет событие. При достаточно малом t вероятность наступления события потока P(A)t. Далее используется обычный алгоритм имитации случайного события. 2.3. Исследование моделей непрерывных случайных величин Исследование моделей непрерывных случайных величин следует проводить при решении следующих задач: а) проверки гипотезы адекватности результатов статистического моделирования теоретическим распределениям; б) оценки неизвестных параметров распределений вероятностей и проверки гипотезы адекватности аппроксимации случайной выборки известным распределением. Для исследования случайной выборки интервал изменения [xmin, xmax] случайной величины X разбивается на k непересекающихся интервалов и подсчитываются частоты mi попаданий значений случайной величины в i-й интервал, i=1,2,…k. Вычисляются оценки Mx, Dx и, если необходимо, моментов высшего порядка ^ Mx ^ 1 N 2 1 N m [ x ] x 2 xi , i, N i 1 N i 1 (2.10) 61 N 1 N 2 1 x ( xi )2 . (2.11) i N 1 i 1 N( N 1) i 1 Зная mi, можно определить частости m (2.12) Pi* i . N Затем строится кумулятивная эмпирическая функция распределения F*j=P*1+P*2+…+P*j, j=1,2,…,k. Пример построения приведен на рис. 2.5. ^ Dx 1,0 F(x) - теоретическая функция 0,9 0,85 0,8 0,725 0,7 0,6 0,56 0,5 0,48 0,4 0,385 0,3 0,2 0,2 0,1 0,075 2 4 6 8 10 15 20 25 Рис. 2.5 Для моделируемого распределения определяются теоретические вероятности попадания значения случайной величины X в интервалы [xi,xi+1): Pi=P{xix<xi+1}, 62 i=1,2,…,k. Результаты моделирования представляются так, как это показано в табл. 2.2. Таблица 2.2 i xi mi Pi P*i F*i 1 [xmin, x1) m1 P1 P*1 P*1 2 [x1, x2) m2 P2 P*2 P*1+ P*2 … … … … … … k-1 [xk-2, xk-1) mk-1 Pk-1 P*k-1 … k [xk-1, xmax) mk Pk P*k P*i Принятую гипотезу о том, что распределение случайной величины совпадает с теоретическим законом распределения, будем проверять по критерию согласия Пирсона (2). Рассмотрим величину k ( Pi Pi* ) 2 2 N . (2.13) Pi i 1 Если проверяемая гипотеза верна, то эта величина при больших значениях N имеет распределение, близкое к распределению 2 с r степенями свободы, причем r=k–1– s; где s – число оцениваемых параметров распределения. В рассматриваемом случае параметры распределения точно известны, и r=k–1. Чтобы определить правило проверки, необходимо выбрать уровень значимости для критерия или доверительную вероятность . Зная функцию распределения F(2,r) можно определить такое значение 2д , которому соответствует значение доверительной вероятности =P(2< 2д )=F( 2д ,r), 0,95-0,99 Уровень значимости =(1-)100 %. Значение 2д определяется по таблицам распределения 2 или по формулам для плотности распределения 2(x, r): 63 2 ( x, r ) r2 x 2 x e 2 r 22 , x 0; (2.14) r 2 Γ(n + 1) = nΓ(n);Γ(0,5) = π, Γ(1) = 1 . Величина согласованности полученных результатов с теоретическим распределением может быть оценена по критерию Колмогорова и определяется как =P{K(z*)<K(z)}, (2.15) * * где z N max F(x) F (x) , N – объем выборки, F*(x) – x эмпирическая кумулятивная функция распределения, K(z ) e 2k z 2 2 . (2.16) k Для применения критерия определяется величина z*, отражающая максимальное расхождение эмпирической и теоретической функций распределения. Далее определяется вероятность K(z*), имеющая смысл коэффициента доверия. 2.4. Моделирование стационарных случайных процессов На практике часто приходится иметь дело со случайными величинами, непрерывно изменяющимися в процессе эксперимента. Примерами в этом случае могут служить: воздействие случайной помехи на вход системы или изменение показателей канала связи с течением времени. Для описания таких ситуаций существуют случайные процессы. Случайный процесс - это функция времени, которая в результате опыта может принять тот или иной конкретный вид, но неизвестный заранее. Конкретный вид, 64 принимаемый случайным процессом в результате эксперимента, называется реализацией случайного процесса. Если произвести серию экспериментов над случайным процессом, то мы получим семейство реализаций этого случайного процесса. Пример реализации случайного процесса приведен на рис. 2.6. Рис. 2.6 Рассмотрим некоторый случайный процесс X(t) на определенном отрезке времени. Если зафиксировать момент времени, то значение случайного процесса в этот момент времени - это случайная величина. Если рассмотреть значения случайного процесса в различные моменты времени t1, t2, ..., tm, то мы получим совокупность случайных величин X(t1), X(t2),…, X(tm). Если интервалы взятия отсчетов случайного процесса очень малы и их достаточно много, то совокупность случайных величин X(t1), X(t2),…, X(tm) достаточно точно определяет характер поведения случайного процесса. Рассматривая значения, принимаемые семейством реализаций случайного процесса X(t) в момент времени t, можно определить функцию распределения F(X(t)) и плотность распределения f(X(t)) сечений случайного процесса, а также математическое ожидание M[X(t)] и дисперсию D[X(t)] сечений, которые будут некоторыми функциями времени. Исчерпывающую информацию о 65 процессе могут дать многомерные функции распределения, но на практике часто ограничиваются определением корреляционной функции случайного процесса. R x (t 1 , t 2 ) MX(t 1 ) M[X(t 1 )]X(t 2 ) M[X(t 2 )], (2.17) где M[…] – операция определения математического ожидания. На практике часто встречаются случайные процессы, протекающие во времени приблизительно однородно и имеющие вид непрерывных случайных колебаний вокруг некоторого среднего значения, причем ни средняя амплитуда, ни характер этих колебаний не обнаруживают существенных изменений с течением времени. Такие случайные процессы называются стационарными. Каждый стационарный процесс можно рассматривать как продолжающийся во времени неопределенно долго. Исследуя стационарный процесс на любом временном участке, мы должны получить одни и те же его характеристики. В общем случае X(t) считается стационарным процессом, если все его вероятностные характеристики не зависят от времени. Как следствие этого, математическое ожидание стационарного случайного процесса, его дисперсия и корреляционная функция не зависят от времени. Рассмотрим алгоритмы генерации значений стационарных случайных процессов с различными корреляционными функциями. Обозначим значения случайного процесса как x(m)=X(mt), где t – шаг моделирования. Будем также считать, что случайный процесс имеет нормальное распределение сечений. Случайный процесс может быть задан корреляционной функцией вида R x ( ) De a . (2.18) 66 Для моделирования процесса может быть использован следующий алгоритм: (2.19) x(k ) k 1(k ) k 2 x(k 1) , (2.20) k 1 D(1 k 22 ) , k 2 e at , где (k) - значения нормально распределенной случайной величины с нулевым математическим ожиданием и единичной дисперсией, D – дисперсия процесса, a – параметр, который определяет статистическую связь соседних случайных отсчетов и задается из условия 0,9<exp(a)<0,9999. Случайный процесс может быть задан корреляционной функцией вида 2 2 R x ( ) De a . (2.21) Для моделирования процесса может быть использован алгоритм скользящего суммирования [5]: P 2Dat 2a2 ( jt )2 . (2.22) e x(k ) C( j)(k j) , C( j) 4 j P Таким образом, для получения k-го значения случайного процесса требуется 2P+1 нормально распределенных случайных величин. Случайный процесс может быть задан корреляционной функцией вида (2.23) R x () D sin( a) / a . Для моделирования процесса также применим алгоритм скользящего суммирования: P Dat sin( ajt ) . (2.24) x(k ) C( j)(k j) , C( j) ajt j P Для получения k-го значения случайного процесса также требуется 2P+1 нормально распределенных случайных величин. Чтобы убедиться в правильности использованного 67 алгоритма, построим оценку корреляционной функции по формуле: 1 N m 1 R (m ) x(i)x(i m) , m 0. (2.25) N m i 0 Для m<0 автокорреляционная функция симметрично достраивается. Так как случайный процесс стационарный, то использование автокорреляционной функции (определяемой по одной реализации процесса) будет правомерно. 2.5. Программные приложения для задач моделирования Программная система для решения задач моделирования непрерывных случайных величин включает в себя набор программ генерации случайных чисел с заданным законом распределения, имитации дискретных и непрерывных случайных воздействий, исследования стационарных случайных процессов, а также набор обучающих примеров. 2.5.1. Программа генерации случайных чисел с заданным законом распределения. Окно программы, реализующей генераторы случайных чисел с заданными законами распределения, приведена на рис. 2.7. Программа позволяет генерировать случайные величины с законами распределений, которые приведены в табл. 2.1. В программе любое из представленных в табл.2.1 распределений может быть моделировано методами – обратных функций, исключения, кусочной аппроксимации, независимо от того, может ли соответствующая функция или плотность распределения быть представлена аналитически. На рис. 2.8 показан второй вариант программы генерации случайных величин с заданным законом распределения. 68 Рис. 2.7 Рис. 2.8 69 Пример реализации функций программы приведен на рис. 2.9. а б в г д е Рис. 2.9 Обозначения функций программы (см. рис. 2.9): - 1 – выход из программы; 70 - 2 – плотность распределения и гистограмма (рис. 2.9,а); - 3 – функция распределения и кумулятивная эмпирическая функция распределения (рис. 2.9,б); - 4 – таблица результатов моделирования (рис. 2.9,в); - 5 – параметры моделирования и результаты статистических тестов (рис. 2.9,г); - 6 – протокол моделирования (рис. 2.9,д); - 7 – меню настройки генераторов (рис. 2.9,е); - 8 – режим задания произвольного распределения вероятностей; - 9 – выбор варианта задания; - 10 – автоматический выбор границ интервала случайной величины; - 11 – выбор математического ожидания (параметр a); - 12 – выбор дисперсии (параметр ); - 13 – переход между пунктами меню настройки; - 14 – выбор параметра (циклическое переключение между значениями); - 15 – выбор числовых значений параметров (левая кнопка мыши – уменьшить, правая - увеличить); - 16 – быстрое переключение между распределениями; - 17 – запуск моделирования. Порядок работы с программой следующий: 1. Изучить соответствующие теоретические положения. 2. По заданию преподавателя выбрать вариант выполнения работы и задать параметры генератора случайных чисел (рис 2.9). 3. Выбрать интервал изменения случайной величины [xmin,xmax]. Обычно интервал изменения случайной величины принимается из расчета F(xmin)<0,0001, F(xmax)>0,9999. 4. Для метода обратных функций определить обратную функцию x=F-1(P) для выбранного распределения. 71 5. Для метода кусочной аппроксимации рассчитать границы интервалов аппроксимации, используя обратную функцию x=F-1(P). Для тех распределений, у которых нет аналитического выражения обратной функции, например для нормального распределения, программа автоматически определит границы. Окно программы приведено на рис. 2.10. Рис. 2.10 6. Для метода исключения определить максимум плотности распределения согласно табл. 2.1. 7. Задать число интервалов сбора статистики, границы интервалов, рассчитать теоретические вероятности 72 попадания случайной величины в интервалы, результаты занести в табл. 2.2. 8. Выполнить исследование для трех способов моделирования: обратных функций, исключения и кусочной аппроксимации. Результаты представить в таблицах, аналогичных табл. 2.2. Также занести в подготовленные таблицы значения математического ожидания Mx, дисперсии Dx, критерия 2 и критерия Колмогорова P(K). 9. На основании выбранной доверительной вероятности сделать вывод о совпадении результатов моделирования с теоретическим распределением для всех трех случаев. Определить значения Mx и Dx по закону распределения и сравнить с полученными в трех опытах. 2.5.2. Программа генерации стационарных случайных процессов. Окно программного приложения для имитации стационарного случайного процесса приведено на рис. 2.11. На рис. 2.12 приведено окно выбора корреляционной функции моделируемого случайного процесса, которое вызывается нажатием кнопки «Выбрать модель». Нажатием кнопки «Начать моделирование» получается реализация случайного процесса с выбранной корреляционной функцией и заданными параметрами. Нажатием кнопки «Сохранить результаты» в текстовый файл сохраняются результаты вычисления корреляционной функции в формате, показанной в табл. 2.3. Таблица 2.3 № отсчета k 0 1 … 299 Rx(kt) 0,4 0,390124 … 0,000227 R(k) 0,565312 0,556020 … 0,051673 73 Рис. 2.11 Рис. 2.12 Программа содержит математические модели процессов, рассмотренные в разд. 2.4. Для работы с программой необходимо выполнить следующее. 1. Ознакомиться с методами моделирования случайных процессов. 74 2. По заданию преподавателя выбрать модель случайного процесса и задать ее параметры. 3. Выбрать шаг моделирования t и определить размер окна скользящего суммирования P, при котором обеспечивается необходимая точность моделирования. Размер окна можно выбрать по условию |Rx(Pt)|<0,0001. 4. Задать число тактов моделирования N и получить реализацию случайного процесса. 5. Сравнить вид теоретической корреляционной функции и оценки автокорреляционной функции, вычисленной по реализации процесса, сделать выводы об адекватности модели. 2.5.3. Программа имитации потока событий. Программа, имитирующая поток некоторых событий, например телефонных вызовов, покупателей, поток машин и т.п., приведена на рис. 2.13. Программа реализует четыре потока событий с интенсивностями 1,2,3,4. Суммарный поток образуется как сумма этих четырех потоков, причем событие i-го потока включается в суммарный поток с вероятностью Pi, i=1,2,3,4. Интенсивность суммарного потока s=1P1+2P2+3P3+4P4. (2.26) Если рассмотреть некоторый малый интервал времени t, то вероятность поступления события пуассоновского потока на этом интервале будет равна pi=Piite-it. (2.27) Вероятности поступления k событий суммарного потока определяются более сложными соотношениями. Например, при k=1 ps(1)=p1(1-p2)(1-p3)(1-p4)+p2(1-p1)(1-p3)(1-p4)+ +p3(1-p1)(1-p2)(1-p4)+p4(1-p1)(1-p2)(1-p3). 75 Рис. 2.13 Примем гипотезу, что суммарный поток пуассоновский с интенсивностью s, что позволит нам определить вероятности поступления событий потока по формуле (2.7). Чтобы проверить эту гипотезу, вспомним, что распределение интервала времени между событиями для пуассоновского экспоненциальное (2.8), поэтому получим эмпирическое распределение длительности интервалов между событиями суммарного потока и проверим гипотезу о том, что это распределение экспоненциальное с параметром s, например, по критерию согласия 2. На рис. 2.14 приведено окно статистики моделирования. Границы интервалов статистики и интервалы времени заданы в тактах моделирования. Для перехода к единицам времени необходимо умножить значения на t. Статистика моделирования включает интервалы между событиями 76 потоков C[1] – C[4] и интервалы между событиями суммарного потока C[S]. Рис. 2.14 На рис. 2.15 показано окно графиков статистики. В нем статистика по четырем входящим потокам и суммарному потоку представлена в виде гистограмм. На последнем графике показаны частоты событий, заключающихся в одновременном наступлении событий двух и более входящих потоков за момент времени t. На рис. 2.16 показано окно ввода интервалов сбора статистики по входящим и суммарному потокам, которое вызывается нажатием кнопки «Настроить». Границы интервалов задаются в тактах моделирования, и при изменении t их необходимо пересчитывать. Границы интервалов могут быть заданы независимо по каждому потоку. Для управления программой предусмотрены кнопки: «Шаг» - выполнить один такт моделирования, «Событие» перейти к моменту возникновения следующего события, «Пуск» - запуск моделирования в пошаговом режиме. 77 Рис. 2.15 Рис. 2.16 78 Порядок работы с программой следующий: 1. Изучить соответствующие теоретические положения. 2. По заданию преподавателя выбрать интенсивности потоков 1 – 4 и вероятности P1 – P4. 3. Определить интенсивность суммарного потока по формуле (2.26). 4. Задать величину шага t из условия st<0,1. 5. Ввести границы интервалов сбора статистики. Левую границу интервала выбрать xmin=0, правую границу xmax выбрать из условия exp(-xmax)<0,0001. 6. Запустить моделирование и набрать статистику, выполнив N тактов моделирования. 7. Обработать статистику, сравнить гистограммы распределений интервалов между событиями потоков с теоретическими и сделать выводы об адекватности модели. Контрольные вопросы 1. Какие генераторы случайных чисел используются в алгоритмах имитации непрерывных случайных величин? 2. В чем состоит метод обратных функций? 3. Опишите работу метода кусочной аппроксимации. 4. Можно ли применить метод обратных функций, если обратная функция не может быть задана аналитически? 6. Что такое простейший поток событий? Каковы его характеристики? 7. Как построить алгоритм имитации Пуассоновского потока? 8. Как построить алгоритм имитации потока Эрланга? 9. Какой случайный процесс называется стационарным? 10. Назовите методы генерации случайных процессов. 11. Как оценить корреляционную функцию по реализации стационарного случайного процесса? 79 12. Какие вы знаете критерии для проверки качества генератора непрерывных случайных величин? 13. Как организовать обработку статистических данных? 80 3. ЛАБОРАТОРНЫЙ ПРАКТИКУМ ЛАБОРАТОРНАЯ РАБОТА №1 РАЗРАБОТКА ГЕНЕРАТОРА РАВНОМЕРНО РАСПРЕДЕЛЕННЫХ СЛУЧАЙНЫХ ЧИСЕЛ 1.1. Цель работы Изучение методов получения на ЭВМ случайных чисел с равномерным законом распределения. Ознакомление с методами статистического анализа качества псевдослучайных чисел. 1.2. Содержание работы Теоретические положения, необходимые при выполнении работы, изложены в разд. 1.1. В работе предлагается создать свой генератор случайных чисел, выбрав определенным образом константы генератора, основанного на формуле (1.1). Разработанный генератор необходимо проверить на стохастичность получаемой последовательности и соответствие равномерному закону распределения. Далее необходимо выбрать один из известных генераторов (прил. 1), получить его характеристики и сделать сравнение. 1.3. Домашнее задание Изучить теоретические положения и ознакомиться с описанием функций программного приложения. Разработать алгоритм получения случайных чисел по 81 формуле (1.1). В соответствии с вариантом задания выбрать значения констант генератора, тип генератора, с которым будет производиться сравнение из табл. 3.1, выбрать метод исследования качества генератора, число интервалов разбиения единичного отрезка m и число отсчетов корреляционного теста n из табл. 3.2. Таблица 3.1 № вар. 1 2 3 4 5 6 7 8 9 10 11 12 a C M 573 457 347 231 472 971 471 67 298 111 571 371 131 754 211 17 141 1 2345 4 754 431 1 664 525 3 1 013 904 223 2 307 647 347 234 71 0 0 1 0 131 127 109 0 134 157 121 232-1 231 -1 230-1 229-1 228-1 228-1 228-1 228-1 216-1 224-1 224-1 224-1 Тип генератора S PM B E F E S PM B F S PM В табл. 3.1 применены следующие обозначения генераторов: S – стандартный, PM – Парка и Миллера, В – Bays – Durham, E – L’Ecyer, F – Фибоначчи с запаздыванием. Подготовить таблицы для снятия статистических данных согласно табл. 3.3 – 3.5 для трех исследований. Определить теоретические вероятности попадания случайных чисел в ячейки таблиц, вычислить число степеней свободы r критерия 2 в соответствии с применяемым методом. Исходя из значения вероятности попадания в ячейку определить требуемое число N опытов 82 для достижения точности 0,9-0,95 по формуле (1.11). Таблица 3.2 № вар. 1 2 3 4 5 6 7 8 9 10 11 12 Метод Тест частот Тест пар частот (З) Тест пар частот (Н) Тест частот Тест пар частот (Н) Тест пар частот (З) Тест частот Тест пар частот (З) Тест пар частот (Н) Тест частот Тест пар частот (Н) Тест частот m n 7 8 9 10 9 8 7 8 9 10 10 10 20 25 30 25 20 25 30 25 20 25 20 20 Таблица 3.3 I p[I] C[I] P*[I] 1 1/m 2 1/m Тест частот 3 … 1/m … m-1 … m … Таблица 3.4 I 1 C 1 2 … m-1 m P* C Тест пар частот 2 … m-1 * * P C P C P* m C P* 83 Таблица 3.5 N r[N] 1 Корреляционный тест 2 3 … n-1 n 1.4. Выполнение работы Запустить программу «Генерация равномерно распределенных случайных чисел» (см. разд. 1.5.1). Выбрать режим «Разработка своего генератора случайных чисел», ввести параметры генератора согласно варианту задания. Далее выбрать генератор случайных чисел и параметры моделирования. В окне параметров задать значения согласно варианту задания, выбрать «генератор собственной конструкции». Далее выполнить проверку качества генератора случайных чисел, ввести рассчитанное при домашней подготовке число N. Получить результаты теста качества согласно варианту задания и результаты корреляционного теста. Результаты моделирования занести в подготовленные таблицы для первого эксперимента. Повторить эксперимент 10 раз и записать значения 2 и P. Определить среднее, минимальное и максимальное значения 2 и минимальное значение P по десяти реализациям. Для проведения второго эксперимента выбрать генератор случайных чисел согласно варианту задания и провести аналогичные исследования. Результаты занести в таблицу для второго эксперимента. Для проведения третьего эксперимента задать произвольные значения констант генератора или выбрать в программе «плохой» генератор случайных чисел, дающий 84 последовательность, не отвечающую равномерному закону распределения. Провести аналогичные исследования и занести результаты в таблицы для третьего эксперимента. Для первого эксперимента определить самостоятельно величину 2 по формулам (1.3) или (1.4) и, используя «калькулятор 2», определить доверительную вероятность P. Для всех трех экспериментов построить гистограммы распределений. Результаты корреляционного теста оценить по формуле (1.8). При этом для всех N>0 должно выполняться условие (1.8), что будет говорить о корреляционной независимости случайной последовательности на рассматриваемом интервале. Сделать выводы о качестве рассмотренных генераторов случайных чисел и выбрать генератор с наилучшими характеристиками. 1.5. Содержание отчета Отчет по лабораторной работе должен содержать цель работы, результаты расчетов при домашней подготовке, алгоритм получения случайных чисел, результаты экспериментов, расчет критерия адекватности, гистограммы распределений, результаты сравнения по критерию 2, оценки корреляционного теста и выводы о качестве генераторов случайных чисел. 85 ЛАБОРАТОРНАЯ РАБОТА №2 МОДЕЛИРОВАНИЕ ПРОСТЫХ СЛУЧАЙНЫХ СОБЫТИЙ 2.1. Цель работы Изучение методов имитации случайных событий на ЭВМ с использованием генераторов случайных чисел. Ознакомление с методами проверки статистических гипотез. 2.2. Содержание работы Теоретические положения, необходимые при выполнении работы, изложены в разд. 1.2 – 1.3. В работе предлагается исследовать простейшую модель имитации случайных событий на примере модели игральной кости. Работа состоит в наборе статистики моделирования при различных значениях вероятностей элементарных событий и проверке адекватности имитационной модели случайных событий. 2.3. Домашнее задание Изучить теоретические положения и ознакомиться с описанием функций программного приложения в разд. 1.5.2, 1.5.3. Разработать алгоритм имитации случайных событий для случая полной группы из шести событий A1, A2, A3, A4, A5, A6 с вероятностями p1, p2, p3, p4, p5, p6. Подготовить таблицы для записи результатов моделирования по примеру табл. 3.6. Варианты заданий приведены в табл. 3.7. 86 Таблица 3.6 № вар. 1 2 3 4 Опыт 1, N=…, 2=… 5 6 Pi C[I] P*[I] Опыт 2, N=…, 2= … Pi C[I] P*[I] Опыт 3, N=…, 2=… Pi C[I] P*[I] Таблица 3.7 № вар. 1 2 3 4 5 6 7 8 9 10 11 12 – p1 0,01 0,12 0,21 0,22 0,06 0,07 0,59 0,4 0,47 0,1 0,26 0,35 p2 0,28 0,24 0,15 0,21 0,07 0,18 0,26 0,1 0,03 0,25 0,11 0,27 p3 0,14 0,18 0,18 0,21 0,07 0,29 0,06 0,03 0,03 0,07 0,26 0,18 p4 0,12 0,33 0,33 0,12 0,19 0,27 0,04 0,04 0,03 0,24 0,12 0,11 p5 0,36 0,1 0,05 0,12 0,26 0,13 0,03 0,14 0,03 0,08 0,21 0,07 p6 0,09 0,03 0,08 0,12 0,35 0,06 0,02 0,3 0,41 0,26 0,04 0,02 Опыт 1 проводится для равновероятных событий, опыт 2 для вероятностей событий, выбираемых согласно 87 варианту задания, опыт 3 выполняется для произвольных значений вероятностей. При домашней подготовке необходимо определить границы интервалов разбиения единичного отрезка в алгоритме моделирования для всех трех опытов, вычислить требуемое число опытов N по формуле (1.11) для достижения точности 0,9-0,95. 2.4. Выполнение работы Запустить программу генерации простых случайных событий (см. разд. 1.5.2 – 1.5.3). Выбрать раздел «Проверка знаний» и пройти предложенный тест три раза, задавая значения вероятностей для каждого из трех опытов и параметры, определенные при домашней подготовке. При успешном прохождении теста приступить к проведению опытов. Выбрать пункт «Пример имитации простых случайных событий», задать вероятности событий для первого опыта («Поровну»), обнулить статистику («Заново»), нажать кнопку с обозначением , ввести число опытов N и выполнить моделирование. Результаты занести в подготовленные таблицы для первого опыта. Задать вероятности для второго эксперимента и повторить действия. Аналогично произвести третий эксперимент. По результатам моделирования построить гистограммы распределений вероятностей событий (теоретические и экспериментальные) и сравнить их. Для каждого эксперимента определить значение 2 по формуле (1.12) и записать в табл. 3.6. Используя программу «калькулятор 2», задать правильное число степеней свободы критерия по условиям эксперимента и определить доверительную вероятность. Сделать выводы об 88 адекватности модели. 2.5. Содержание отчета Отчет по лабораторной работе должен содержать цель работы, результаты расчетов при домашней подготовке, алгоритм имитации случайных событий, результаты экспериментов, расчет критерия адекватности для всех экспериментов, гистограммы распределений, результаты оценки по критерию 2 и выводы об адекватности модели случайных событий. 89 ЛАБОРАТОРНАЯ РАБОТА №3 МОДЕЛИРОВАНИЕ СЛОЖНЫХ СЛУЧАЙНЫХ СОБЫТИЙ НА ПРИМЕРЕ ИГРАЛЬНОГО АВТОМАТА 3.1. Цель работы Изучение методов имитации случайных событий на ЭВМ с использованием генераторов случайных чисел и алгоритмов имитации простых случайных событий. Ознакомление с методами проверки статистических гипотез. 3.2. Содержание работы Теоретические положения, необходимые при выполнении работы, изложены в разд. 1.4. В работе предлагается исследовать одну из предложенных моделей имитации сложных событий – модель игрального автомата (см. разд. 1.5.4). Работа состоит в наборе статистики моделирования при различных значениях вероятностей элементарных событий и проверке адекватности имитационной модели элементарных случайных событий и модели сложных случайных событий. В работе проводятся три эксперимента. Первый эксперимент проводится при равновероятных исходах элементарных событий. Второй эксперимент проводится при вероятностях элементарных событий, заданных в соответствии с вариантом. Третий эксперимент проводится при заданных вариантом исходах испытаний, но при другом порядке назначения элементарных событий ячейкам. 90 Требуется установить, что вероятности сложных событий в данной модели не зависят от распределения исходов по ячейкам и находятся в соответствии с теорией. 3.3. Домашнее задание Изучить теоретические положения и ознакомиться с описанием функций программного приложения в разд. 1.5.4. Разработать алгоритм модели игрального автомата, рассмотренной в разд. 1.4. Подготовить таблицы для записи результатов моделирования из расчета на проведение трех экспериментов (табл. 3.8 и 3.9). Варианты заданий приведены в табл. 3.10. В соответствии с вариантом задания определить теоретические значения вероятностей простых событий P[A1], P[A2], P[A3] и вероятностей сложных событий P[B] и записать в соответствующие ячейки таблиц для опытов №1, 2, 3. Таблица 3.8 Опыт №… A1 P[A1] m[A1] p*[A1] A2 P[A2] m(A2) p*[A2] A3 P[A3] m[A3] P*[A3] N = … 2 [1]= … 2 [2]= … 2 [3]= … 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 91 Таблица 3.9 Опыт №… Bi n[B] P*[Bi] A B N=…, 111 A< Np< B, = 0,05 222 333 444 555 666 Таблица 3.10 1 Ai Pi 2 Ai Pi 3 Ai Pi 4 Ai Pi 5 Ai Pi 6 Ai Pi 1 K=1 1 0,09 K=2 5 0,11 K=3 4 0,08 K=4 6 0,11 K=5 1 0,07 K=6 6 0,11 2 3 4 5 6 7 8 9 10 6 0,11 2 0,09 1 0,11 3 0,1 5 0,1 4 0,1 2 0,07 1 0,08 3 0,15 1 0,08 6 0,11 2 0,08 4 0,11 3 0,1 5 0,09 2 0,12 1 0,1 1 0,1 5 0,12 6 0,12 1 0,08 2 0,07 3 0,1 3 0,09 2 0,12 1 0,13 2 0,09 5 0,11 4 0,11 3 0,09 2 0,09 1 0,11 2 0,09 3 0,09 2 0,11 1 0,09 1 0,07 1 0,07 2 0,11 2 0,11 3 0,11 3 0,09 4 0,12 5 0,12 6 0,12 4 0,11 5 0,11 3 0,09 1 0,09 2 0,11 3 0,09 1 0,02 2 0,09 1 0,18 Для каждого из опытов определить требуемое число испытаний N. 3.4. Выполнение работы Запустить программу «Имитация сложных случайных событий» (см. разд. 1.5.4). 92 Нажать кнопку «Настройка автомата» и ввести заданное распределение исходов по ячейкам, а затем кнопками «+», «-» задать вероятности ячеек, начиная с наименьших. В первом эксперименте вероятности задаются равными по значению. Сохранить настройку и запустить процесс моделирования. В появившемся окне ввести определенное при домашней подготовке число опытов N и выполнить эксперимент. В подготовленные таблицы (табл. 3.8 и 3.9) для опыта №1 переписать статистику событий «1», «2», «3» и статистику комбинаций «K». Задать вероятности ячеек согласно варианту задания, повторить эксперимент и записать результаты в таблицы (табл. 3.8 и 3.9) для опыта №2. Изменить произвольно распределение событий по ячейкам. Вероятности соответствующих исходов при этом не должны меняться. Повторить эксперимент и записать результаты в таблицы (табл. 3.8 и табл. 3.9) для опыта №3. Определить величины 2 во всех трех опытах по строкам таблицы для A1, A2, A3 по формуле (1.12) и записать в таблицы. Используя программу «калькулятор 2» (см. разд. 1.5.1 – 1.5.3), определить значения доверительной вероятности и сделать выводы об адекватности модели простых событий. Выполнить расчет доверительных интервалов по формуле (1.13) для уровня значимости =0,05 для каждой из оценок n[B] каждого из трех опытов. Записать границы доверительных интервалов в строки A, B таблиц. Определить, выполняется ли условие (1.13) и сделать выводы об адекватности модели сложных событий. Сравнить опыты № 2 и 3 и сделать вывод о независимости вероятностей событий от распределения исходов по ячейкам модели автомата. 93 3.5. Содержание отчета Отчет по лабораторной работе должен содержать цель работы, результаты расчетов при домашней подготовке, алгоритм модели автомата, результаты экспериментов, расчет критерия адекватности для всех экспериментов, доверительные интервалы для оценок вероятностей сложных событий, результаты оценки по критерию 2 и выводы об адекватности модели. 94 ЛАБОРАТОРНАЯ РАБОТА №4 МОДЕЛИРОВАНИЕ СЛОЖНЫХ СЛУЧАЙНЫХ СОБЫТИЙ НА ПРИМЕРЕ РУЛЕТКИ 4.1. ЦЕЛЬ РАБОТЫ Изучение методов имитации случайных событий на ЭВМ с использованием генераторов случайных чисел и алгоритмов имитации простых случайных событий. Ознакомление с методами проверки статистических гипотез. 4.2. Содержание работы Теоретические положения, необходимые при выполнении работы, изложены в разд. 1.4. В работе предлагается исследовать одну из предложенных моделей имитации сложных событий – модель рулетки (см. разд. 1.5.5). Работа состоит в наборе статистики моделирования при различных значениях вероятностей элементарных событий и проверке адекватности имитационной модели элементарных случайных событий и модели сложных случайных событий. В работе эксперимент проводится при равновероятных исходах элементарных событий. Исследуются сложные события, соответствующие трем комбинациям: - 1 - «красное»; - 2 – «черное»; - 3 – вариант задания. Требуется установить, что модель адекватно имитирует 95 элементарные события и что вероятности сложных событий в данной модели находятся в соответствии с теорией в 95 %-ных доверительных интервалах (=0,05). 4.3. Домашнее задание Изучить теоретические положения и ознакомиться с описанием функций программного приложения в разд. 1.5.5. Разработать алгоритм модели рулетки, рассмотренной в разд. 1.4. Подготовить таблицы (табл. 3.11 и 3.12) для записи результатов моделирования. Определить требуемое число опытов N, исходя из минимальной оцениваемой вероятности p=1/37, по формуле (1.11). Таблица 3.11 0 № m[I] P*[I] 1 2 3 4 5 6 7 8 9 10 11 Продолжение табл. 3.11 12 № m[I] P*[I] 13 14 15 16 17 18 19 20 21 22 23 Продолжение табл. 3.11 24 № m[I] P*[I] 25 26 27 28 29 30 31 32 33 34 35 36 Варианты лабораторной работы приведены в табл. 3.13. 96 4.4. Выполнение работы Запустить программу «Имитация сложных случайных событий» (см. разд. 1.5.5). Нажать кнопку «выбрать параметры модели» и ввести вероятности исходов, равные 1/37. Чтобы задать комбинацию, указанную в варианте, нужно сделать любые произвольные ставки на соответствующие числа. Таблица 3.12 № K. Pi mi 1 P*I A B Pi mi 2 P*I A B Pi mi 3 P*I A B 1 2 3 4 5 6 7 8 9 10 После этого нажать кнопку «выполнить несколько опытов», в появившемся окне ввести число опытов N, определенное при домашней подготовке. Выполнить моделирование. Нажать кнопку «смотреть статистику», записать результаты в табл. 3.11. Нажать кнопку «смотреть графики». Записать численные результаты для трех исследуемых комбинаций в табл. 3.12. 97 Вычислить величину 2 по формуле (1.12) по данным первой таблицы. Используя программу «калькулятор 2» (см. разд. 1.5.1 – 1.5.3), определить значения доверительной вероятности и сделать выводы об адекватности модели простых событий. № вар 1 2 3 4 5 6 7 8 9 10 11 12 Таблица 3.13. Варианты заданий Исследуемая комбинация с 1 по 18 и 36 с 19 по 36 и 1 с 1 по 12 и 25, 26 с 13 по 22 и 1, 35 с 27 по 36 и 3, 15 3,6,9,12,15,18,21,24,27,30,33,36 и 0 2,5,8,11,14,17,20,23,26,29,32,35 и 0 1,4,7,10,13,16,19,22,25,28,31,34 и 0 с 1 по 6 , 32,33,35,36 и 0 с 4 по 9, 25,26,27, 16,17,18 и 0 с 13 по 18, 1,2,3, 34,35,36 и 0 1,2,4,5, 11,12,14,15, 28,29,31,32 и 0 Выполнить расчет доверительных интервалов по формуле (1.13) для уровня значимости =0,05 для оценок вероятностей из второй таблицы. Записать значения границ доверительных интервалов в строки A,B табл. 3.12. Сделать выводы об адекватности модели. 4.5. Содержание отчета Отчет по лабораторной работе должен содержать: - цель работы: - результаты расчетов при домашней подготовке; - алгоритм модели рулетки; - результаты экспериментов; - расчет критерия адекватности для элементарных 98 событий; - доверительные интервалы для оценок вероятностей сложных событий; - результаты оценки по критерию 2 и выводы об адекватности модели. 99 ЛАБОРАТОРНАЯ РАБОТА №5 РАЗРАБОТКА ГЕНЕРАТОРА СЛУЧАЙНЫХ ЧИСЕЛ С ЗАДАННЫМ ЗАКОНОМ РАСПРЕДЕЛЕНИЯ 5.1. Цель работы Изучение методов получения на ЭВМ случайных чисел с произвольным заданным законом распределения. Ознакомление с методами проверки статистических гипотез. 5.2. Содержание работы Теоретические положения, необходимые при выполнении работы, изложены в разд. 2.1. В работе предлагается разработать алгоритмы генератора случайных чисел с заданным законом распределения согласно варианту выполнения лабораторной работы. Для генерации случайных чисел предлагается использовать один из трех методов: метод обратных функций, метод исключений, метод кусочной аппроксимации. Работа предполагает получение случайной последовательности для каждого из рассматриваемых генераторов, вычисление критериев адекватности и сравнение алгоритмов по точности и затратам машинного времени. 5.3. Домашнее задание Изучить теоретические положения и ознакомиться с описанием функций программного приложения в 100 разд. 2.5.1. Разработать алгоритмы получения случайных чисел по методу обратных функций, методу исключений, методу кусочной аппроксимации. В соответствии с вариантом задания (табл. 3.14) выбрать распределение вероятностей, занести в отчет формулы функции распределения и плотности распределения вероятностей. Таблица 3.14 № вар 1 2 3 4 5 6 7 8 9 10 11 12 F(x) 4 3 2 2 5 2 4 3 2 4 6 4 a 10 1,5 2 2 1 1 0,5 3 - 2 5 1 1,5 1 0,5 1 m 10 8 8 10 10 8 10 8 8 10 8 10 n 12 10 8 10 12 10 10 8 12 12 10 10 Определить интервал изменения случайной величины из условий F(xmin)<0,0001, F(xmax)>0,9999. Для распределений, область определения которых ограничена (x>0), выбирать xmin=0. Для метода кусочной аппроксимации вычислить границы интервалов и записать в табл. 3.15. Число интервалов n взять из варианта задания. Для записи результатов моделирования по методу обратных функций, методу исключений, методу кусочной аппроксимации подготовить таблицы по примеру табл. 3.16. 101 Таблица 3.15 Метод обратных функций: Обратная функция x = … , xmin = … , xmax = … Метод исключений: f(x)= … , xmin = … , xmax = … , fmax = … Метод кусочной аппроксимации: xmin = … , xmax = … , 0 1 2 … n № n-1 c1 c2 Таблица 3.16 N=… I P[I] C[I] P*[I] 2 = … 0 1 , P(2) = … , K = … 2 … , P(K) = … m-1 m 5.4. Выполнение работы Запустить программу «Генератор случайных чисел» (разд. 2.5.1). В меню «Моделирование» выбрать пункт «Вариант задания». В появившемся окне выбрать номер варианта и задать недостающие данные. Ввести границы интервала изменения случайной величины, определенные при домашней подготовке, и границы интервала статистики, которые могут совпадать с границами интервала случайной величины. Если при определении границ возникли трудности, можно принять рекомендуемые значения границ (кнопка «Рекомендуемые значения»). 102 Для распределений, область определения которых ограничена x>0 (экспоненциальное, Рэлея, Эрланга и т.п.), левую границу интервалов задать x=0. Выбирается метод генерации случайных величин. Для первого опыта выбрать «метод обратных функций». Сохранить данные, ввести число N опытов и выполнить моделирование. Перенести результаты в таблицу для первого эксперимента. Выбрать «метод исключений», выполнить моделирование и перенести результаты в таблицу для второго эксперимента. Выбрать «метод кусочной аппроксимации», задать число n интервалов, выполнить моделирование и перенести результаты в таблицу для третьего эксперимента. В меню «Моделирование» выбрать пункт «Границы для метода кусочной аппроксимации», сравнить значения границ с полученными при домашней подготовке. Для всех трех опытов построить гистограммы распределений и сравнить с задаными вариантом функциями плотности распределения. По результатам моделирования сделать вывод о том, какой из методов дает большую точность моделирования случайной величины, какой из методов требует наибольших затрат времени, а какой – наименьших. 5.5. Содержание отчета Отчет по лабораторной работе должен содержать: - цель работы; - результаты расчетов при домашней подготовке; - алгоритмы генерации случайных чисел; - результаты экспериментов, результаты оценки по критерию 2 и по критерию Колмогорова и сравнение характеристик рассмотренных методов. 103 ЛАБОРАТОРНАЯ РАБОТА №6 ИССЛЕДОВАНИЕ ГЕНЕРАТОРОВ СЛУЧАЙНЫХ ЧИСЕЛ С НОРМАЛЬНЫМ ЗАКОНОМ РАСПРЕДЕЛЕНИЯ 6.1. Цель работы Изучение методов получения на ЭВМ случайных чисел с нормальным законом распределения. Ознакомление с методами проверки статистических гипотез. 6.2. Содержание работы Случайные числа, имеющие нормальный закон распределения вероятностей, широко применяются в практике моделирования, например, при моделировании случайных процессов. В работе предлагается исследовать различные алгоритмы генерации нормально распределенных случайных чисел. Теоретические положения, необходимые при выполнении работы, изложены в разд. 2.1. Случайные числа, имеющие нормальный закон распределения, обычно получают по методу предельных теорем. Такие алгоритмы наиболее просты в реализации, но требуют большего числа обращений к датчику базовой псевдослучайной последовательности. Для получения одного нормально распределенного числа требуется N1=12 равномерно распределенных чисел. Метод обратных функций требует решения уравнения x f (z )dz P , (3.1) 104 где f(z) – плотность нормального распределения. Трудоемкость решения уравнения (3.1) приводит к снижению производительности алгоритма даже при том, что для получения одного числа последовательности потребуется N1=1 равномерно распределенное число. В методе исключений требуется сгенерировать в среднем N1 = 2(xmax-xmin)fmax равномерно распределенных случайных чисел для получения одного нормально распределенного числа. При выборе пределов xmin=a–3, xmax=a+3, f max 1 / 2 получаем N14,79. Метод кусочной аппроксимации наиболее экономичен по вычислительным затратам, для этого метода N1=2. В работе необходимо провести непосредственное исследование четырех методов генерации нормально распределенных случайных чисел и определить их характеристики: - затраты случайных чисел; - время моделирования; - оценки точности по критерию 2 и критерию Колмогорова. 6.3. Домашнее задание Изучить теоретические положения и ознакомиться с описанием функций программного приложения в разд. 2.5.1. Разработать алгоритмы получения нормально распределенных случайных чисел по методу предельных теорем, методу обратных функций, методу кусочной аппроксимации, методу исключения. В соответствии с вариантом задания выбрать параметры нормального распределения вероятностей. 105 Варианты заданий приведены в табл. 3.17. Таблица 3.17 № вар. 1 2 3 4 5 6 a n 0 0,5 1 2 1,5 1 1 0,5 0,1 2 1,5 1 10 8 12 8 8 10 № вар. 7 8 9 10 11 12 A N -0,5 0 1 0,1 1 0 0,7 5 3 0,1 2 3 10 12 10 10 8 10 Определить интервал изменения случайной величины из условий xmin=a – 3, xmax=a+3. Для метода кусочной аппроксимации вычислить границы интервалов и записать в табл. 3.18. Таблица 3.18 Метод обратных функций: Обратная функция x = … , xmin = … , xmax = … Метод исключений: f(x)= … , xmin = … , xmax = … , fmax = … Метод кусочной аппроксимации: xmin = … , xmax = … , 0 1 2 … n-1 n № c1 c2 Число интервалов n взять из варианта задания. Подготовить четыре таблицы по примеру табл. 3.19 для записи результатов моделирования. Число интервалов m взять из варианта задания. Вычислить вероятности попадания нормально распределенной случайной величины в заданные интервалы. 106 Выбрать минимальное значение вероятности и для него определить число опытов N по формуле (1.11). Таблица 3.19 N=… I P[I] C[I] P*[I] 2 = … 0 1 , P(2) = … , K = … 2 … , P(K) = … m-1 m При использовании системы Mathcad при домашней подготовке для вычисления функции распределения вероятностей используется функция pnorm(x,a,), где x – граница интервала, a, - параметры, заданные вариантом. Для определения границ интервалов кусочной аппроксимации используется функция qnorm(pi,a,), где pi=i/n, i=0,1,…,n. 6.4. Выполнение работы Запустить программу «Генератор случайных чисел» (см. разд. 2.5.1), перейти в меню настройки, выбрать «нормальное распределение», задать параметры a и согласно варианту. Задать число интервалов ступенчатой аппроксимации n. Ввести число опытов N. Выбрать метод обратных функций, выполнить моделирование и перенести результаты в первую таблицу. Зафиксировать время выполнения эксперимента (Time) и количество чисел базовой последовательности (NRND). Повторить эксперимент, выбирая метод исключений, метод кусочной аппроксимации и метод предельных теорем. Число N в четырех экспериментах не изменять. 107 Сделать сравнение результатов. Определить, какой из методов требует наименьшего числа обращений к датчику случайных чисел, а какой – наибольшего. Указать, какой из методов дает наибольшую точность, а какой – наименьшую по критериям Пирсона (2) и Колмогорова. Сравнить методы по времени выполнения. 6.5. Содержание отчета Отчет по лабораторной работе должен содержать: - цель работы; - результаты расчетов при домашней подготовке; - алгоритмы генерации нормально распределенных случайных чисел; - результаты экспериментов; - результаты оценки по критерию 2 и по критерию Колмогорова и сравнение рассмотренных методов по указанным выше характеристикам. 108 ЛАБОРАТОРНАЯ РАБОТА №7 ОЗНАКОМЛЕНИЕ С МЕТОДАМИ ГЕНЕРАЦИИ СТАЦИОНАРНЫХ СЛУЧАЙНЫХ ПРОЦЕССОВ 7.1. Цель работы Изучение методов получения на ЭВМ случайных стационарных процессов с заданной корреляционной функцией. Ознакомление с методами исследования характеристик случайных стационарных процессов. 7.2. Содержание работы На практике при исследовании функционирования систем управления требуется имитировать случайные воздействия, представляющие собой функции каких-либо параметров объекта от времени. Во многих приложениях эти воздействия могут быть с достаточной степенью точности представлены случайными стационарными процессами. В работе предлагается исследовать алгоритмы генерации случайных стационарных процессов с нормальным распределением сечений по методам рекурсивной фильтрации и скользящего суммирования. Теоретические положения, необходимые при выполнении работы, изложены в разд. 2.4. Работа предполагает получение реализации случайного стационарного процесса с заданной корреляционной функцией и вычисление оценки корреляционной функции по полученной реализации. 109 7.3. Домашнее задание Изучить теоретические положения и ознакомиться с описанием функций программного приложения в разд. 2.5.2. Выбрать корреляционную функцию и ее параметры согласно варианту задания. Варианты заданий приведены в табл. 3.20. Разработать алгоритм генерации случайного процесса и алгоритм получения оценки автокорреляционной функции. Определить, какой метод будет использоваться при генерации случайных чисел. Определить размер окна P по условию |Rx(Pt)| < 0,0001 Таблица 3.20 № вар 1 2 3 4 5 6 7 8 9 Rx() De a 2 2 Dea D sin( a) / a De a 2 2 Dea D sin( a) / a De a 2 2 Dea D sin( a) / a a 10 De 11 Dea D sin( a) / a 12 2 2 D 0,3 a 0,9 t 0,4 2 0,5 0,5 0,4 0,4 2 0,6 0,5 0,5 0,5 2 0,1 1 10 1,2 0,2 1 1 1 1 0,2 0,5 0,5 2,5 2 0,3 0,8 2 0,8 0,15 0,3 0,9 1,5 110 Подготовить таблицу для записи данных. Пример показан в табл. 3.21. статистических Таблица 3.21 I 1 2 … P Rx(It) R[I] … … 7.4. Выполнение работы Запустить программу «Исследование случайных процессов» (см. разд. 2.5.2), выбрать корреляционную функцию, задать параметры a, D, t, P согласно варианту задания и результатам домашней подготовки. Задать число N опытов, исходя из условия N–P>1000. Запустить процесс моделирования. После завершения нажать кнопку «Сохранить результаты» и ввести имя файла, например report.txt. Данные из файла перенести в таблицу результатов. Построить графики теоретической и экспериментальной автокорреляционной функций. Определить максимальное отклонение экспериментально полученной корреляционной функции от теоретической. Определить дисперсию случайного процесса. 7.5. Содержание отчета Отчет по лабораторной работе должен содержать: - цель работы; - вариант задания; - результаты расчетов при домашней подготовке; 111 - алгоритм генерации случайного процесса; - результаты экспериментов; - выводы по работе. стационарного 112 ЛАБОРАТОРНАЯ РАБОТА №8 ОЗНАКОМЛЕНИЕ С МЕТОДАМИ ГЕНЕРАЦИИ ПРОСТЕЙШИХ ПОТОКОВ СЛУЧАЙНЫХ СОБЫТИЙ 8.1. Цель работы Изучение методов получения на ЭВМ потоков случайных событий. Ознакомление с методами исследования потоков случайных событий. 8.2. Содержание работы При исследовании реальных систем существует задача имитации случайных событий, происходящих в некоторые случайные моменты времени. На практике для исследований наиболее часто используют простейший поток случайных событий. В работе предлагается исследовать алгоритмы генерации простейших потоков однородных случайных событий. Теоретические положения, необходимые при выполнении работы, изложены в разд. 2.3. В работе исследуется система четырех простейших потоков событий, заданных своими интенсивностями i, i=1,2,3,4. Суммарный поток образуется путем объединения в один поток событий каждого из четырех потоков с вероятностями Pi, i=1,2,3,4. В работе исследуются вероятностные распределения интервалов между соседними событиями потоков, а также вероятности появления одного, двух, трех и четырех событий суммарного потока. 113 По результатам моделирования делается вывод об адекватности модели потока событий, а также о правомерности предположения того, что результирующий поток обладает свойствами простейшего потока событий. 8.3. Домашнее задание Изучить теоретические положения и ознакомиться с описанием функций программного приложения в разд. 2.5.3. Выбрать параметры модели согласно заданному варианту задания. Перечень вариантов заданий приведен в табл. 3.22. Разработать алгоритм генерации простейшего потока событий. Таблица 3.22 № 1 2 3 4 5 6 7 8 9 10 11 12 1 1 2 3 1 2 1 2 1 2 1 2 2 2 2 2 3 1 3 4 3 1 2 1 2 1 3 1 4 1 1 3 2 5 4 2 1 2 1 4 3 1 1 1 3 4 1 4 2 1 0,5 5 P1 0,9 0,8 0,8 0,7 0,5 0,8 0,8 0,7 0,9 0,9 0,8 0,2 P2 0,8 0,1 0,7 0,6 0,4 0,5 0,7 0,8 0,7 1 0,6 0,9 P3 0,9 0,9 0,5 0,8 0,3 0,9 0,3 0,7 0,5 0,5 0,75 0,6 P4 0,7 0,5 0,5 0,7 0,9 0,6 0,1 0,7 0,3 1 1 0,8 Необходимо подготовить пять таблиц для записи результатов моделирования. Пример показан в виде табл. 3.33. 114 Таблица 3.23 № Границы левая правая P[I] C[I] P*[I] 1 2 3 4 5 6 7 8 9 10 В таблицы заносится статистика попадания случайной величины «интервал между событиями потока» C[I], теоретические вероятности P[I] и определенные в результате проведенных опытов значения частостей P*[I]. Определить величину шага t из условия st < 0,1. Задать интервал статистики из условия xmin = 0, exp( - xmax)< 0,0001. Задать по 10 значений границ, вычислить значения границ в тактах моделирования и записать в таблицы. Определить теоретические вероятности P[I] попадания случайных величин в заданные интервалы. Подготовить таблицу для записи статистики событий суммарного потока. Пример показан в виде табл. 3.34. Вычислить теоретические вероятности событий P(I) в предположении, что суммарный поток пуассоновский, по формуле (2.7). Определить число N опытов, задавшись минимальным значением оцениваемой вероятности и точностью =0,95. 115 Таблица 3.24 I 0 1 2 3 4 P(I) N(I) P*(I) 8.4. Выполнение работы Запустить программу «Потоки событий» (см. разд. 2.5.3), ввести параметры модели согласно варианту задания и результатам домашней подготовки. Запустить процесс моделирования. Выполнить N тактов моделирования. Перенести статистику в подготовленные таблицы. Построить гистограммы распределений. Определить доверительные интервалы для вероятностей появления одного, двух и более событий потока и сделать вывод о согласии полученных результатов с принятыми предположениями. Для суммарного потока, а также для одного из входящих потоков, по заданию преподавателя, проверить гипотезу о том, что распределение интервала между событиями потока экспоненциальное с параметром , где - интенсивность соответствующего потока. Для проверки гипотезы применить критерий Пирсона 2 ( ), формула (2.13). Для оценки доверительной вероятности можно использовать программу «калькулятор 2» из разд. 1 данного пособия. 116 8.5. Содержание отчета Отчет по лабораторной работе должен содержать: - цель работы; - вариант задания; - результаты расчетов при домашней подготовке; - алгоритм генерации потока случайных событий; - результаты экспериментов; - результаты проверки гипотез по критерию Пирсона; - доверительные интервалы для вероятностей событий суммарного потока; - выводы по работе. 117 БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Советов Б.Я., Яковлев С.А. Моделирование систем. М.: Высшая школа, 1985. - 271 c. 2. Вентцель Е.С. Теория вероятностей. - М.: Наука, 1969. – 576 с. 3. Финаев В.И. Моделирование при проектировании информационно-управляющих систем: Учебное пособие. Таганрог: Изд-во ТРТУ, 2002. 4. Заездный А.М. Основы расчетов по статистической радиотехнике. - М.: Связь, 1969. 5. Вероятностные методы в вычислительной технике: Учебное пособие для вузов / Под ред. А.Н.Лебедева, Е.А.Чернявского. – М.: Высшая школа, 1986. 118 ПРИЛОЖЕНИЕ 1 Описание генераторов случайных чисел П1.1. Стандартный генератор В стандарте ANSI-C имеется функция rand(), выдающая равномерно распределенное число от 0 до RAND_MAX, и связанная с ней функция srand(), производящая начальную установку счетчика. Описание в файле <stdlib.h>. Почти все подобные генераторы используют рекуррентную последовательность I(n+1)=(a*I(n)+c)(mod m). Число a называется мультипликатором, число c инкрементом, а число m - модулем. Такой выбор может послужить серьезным ограничением на статистические свойства последовательности случайных чисел. Кроме того, в большинстве случаев RAND_MAX=35 767, что значительно меньше, чем диапазон изменения целых чисел. В некоторых испытаниях теория рекомендует 106 - 109 случайных проб, но, пользуясь подобным счетчиком, можно получить не более RAND_MAX одинаковых случайных чисел, т.е. в 30 тыс. 30 млн раз меньше рекомендуемого. Генератор ANSI-C был опубликован комиссией как пример и не рекомендуется для исследовательских приложений. #define RAND_MAX 32767 unsigned long next=1; int rand(void) { next=next*1103515245+12345; return((unsigned int)(next/65536)%32768); } 119 void srand(unsigned int seed) { next=seed;} Мультипликатор и инкремент этого примера (который, скорее всего, и поставляется со стандартной библиотекой C) не являются оптимальными. П1.2. Генератор Парка-Миллера Самая простая последовательность, которую можно предложить для реализации генератора равномерного распределения: I(j+1)=a*I(j)(mod m) при соответствующем выборе констант. Константы были предложены Парком и Миллеромr: a=75=16807, m=231-1=2 147 483 647 и протестированы в исследованиях Левиса, Гудмана, Миллера (1969). Прямое приложение этого метода возможно на языках ассемблера, но языки высокого уровня могут при этом зафиксировать переполнение. Для устранения этого недостатка предложен метод частичной факторизации модуля. Модуль разлагается в выражение m=a*q+r Если r<q и 0<z<m-1, то величины a*(z mod q) и r*[z/q] всегда лежат в интервале 0,...,m-1. Для умножения (a*z)(mod m) при этом используется алгоритм: - t = a(z mod q)-r[z/q], - если t<0, то t += m, - (a*z)(mod m)=t. В случае констант Парка-Миллера можно использовать q=12 773 и r=2 836. 120 #define #define #define #define #define #define IA 16807 IM 2147483647 AM (1./IM) IQ 12773 IR 2836 MASK 123456789 static long dummy; float unirand0(void) { long k; float ans; dummy^=MASK; k=dummy/IQ; if((dummy=IA*(dummy-k*IQ)-IR*k)<0) dummy+=IM; ans=AM*dummy; dummy^=MASK; return(ans); } Использование маски связано с тем, что специфика алгоритма не позволяет устанавливать счетчик на ноль. Но, как показывает опыт, большинство пользователей счетчиков делают именно так. Маска гарантирует, что установленный счетчик не будет нулем. П1.3. Генератор Бойза и Дарема В дополнение к предыдущему алгоритму, производят перетасовку по методу Бойза и Дарема (Bays и Durham), что позволяет уничтожить нежелательные корреляции между сериями сгенерированных случайных чисел. . . . #define #define #define #define #define NTAB 32 NWUP 8 NDIV (1+(IM-1)/NTAB) EPS 1.2e-7 RNMX (1.0-EPS) 121 float unirand1(void) { int j; long k; static long iy=0,iv[NTAB]; float temp; if(dummy<=0 || !iy) { if(dummy<0) dummy=-dummy; else if(dummy==0) dummy=1; for(j=NTAB+NWUP-1;j>=0;j--) { k=dummy/IQ; if((dummy=IA*(dummy-k*IQ)-IR*k)<0) dummy+=IM; if(j<NTAB) iv[j]=dummy; } iy=iv[0]; } k=dummy/IQ; if((dummy=IA*(dummy-k*IQ)-IR*k)<0) dummy+=IM; iy=iv[j=iy/NDIV];iv[j]=dummy; if((temp=AM*iy)>RNMX) return(RNMX); else return(temp); } Маска здесь не применяется, поскольку метод инициализации алгоритма отсекает ошибочные значения текущего счетчика. Алгоритм Парка-Миллера с перетасовкой проходит все известные тесты, включая и те, где без перетасовки этот алгоритм дает сбой. Хорошее поведение наблюдается до значений числа вызовов счетчика порядка 108, где он начинает повторяться. П1.4. Генератор L’Ecyer В генераторе Парка-Миллера мы находили последовательность так: I(j+1)=a*I(j)(mod m), где a и m - особым образом выбранные константы. 122 Прямое приложение этого метода возможно на языках ассемблера, но языки высокого уровня могут при этом зафиксировать переполнение. Для обхода этого Scharge предложил метод частичной факторизации модуля. Модуль разлагается в выражение m=a*q+r. Если r<q и 0<z<m-1, то величины a*(z mod q) и r*[z/q] всегда лежат в интервале 0,...,m-1. Для умножения (a*z)(mod m) при этом используется алгоритм: - t = a(z mod q)-r[z/q], - если t<0, то t += m, - (a*z)(mod m)=t. Если требуется число вызовов, превышающее по порядку 108, то для этого случая L'Ecuyer рекомендуется комбинировать вывод двух последовательностей с близкими, но отличающимися константами. В его исследованиях хороший результат был получен для значений: m1=2 147 483 563, a1=40 014, q1=53 668, r1=12 211; m2=2 147 483 399, a2=40 692, q2=52 774, r2=3 791. При этом для современных компьютеров период генерируемой последовательности становится недостижимым (длина оценивается по порядку как 1018). . . . #define IM1 2147483563 #define IM2 2147483399 #undef AM #define AM (1./IM1) #define IMM1 (IM1-1) #define IA1 40014 #define IA2 40692 #define IQ1 53668 #define IQ2 52774 #define IR1 12211 #define IR2 3791 #undef NDIV #define NDIV (1+IMM1/NTAB) 123 float unirand2(void) { int j; long k; static long dummy2=123456789; static long iy=0; static long iv[NTAB]; float temp; if(dummy<=0 || !iy) { if(dummy<0) dummy=-dummy; else if(dummy==0) dummy=1; dummy2=dummy; for(j=NTAB+NWUP-1;j>=0;j--) { k=dummy/IQ1; if((dummy=IA1*(dummy-k*IQ1)-IR1*k)<0) dummy+=IM1; if(j<NTAB) iv[j]=dummy; } iy=iv[0]; } k=dummy/IQ1; if((dummy=IA1*(dummy-k*IQ1)-IR1*k)<0) dummy+=IM1; k=dummy2/IQ2; if((dummy2=IA2*(dummy2-k*IQ2)-IR2*k)<0) dummy2+=IM2; iy=iv[j=iy/NDIV]-dummy2;iv[j]=dummy; if(iy<1) iy+=IMM1; if((temp=AM*iy)>RNMX) return(RNMX); else return(temp); } П.15. Генератор Фибоначчи с запаздыванием #define FIBONACCI_A 97 #define FIBONACCI_B 33 #define FIBONACCI_N 98 124 int fib_seed = 0; int fib_k = FIBONACCI_N-1; double fib_x[FIBONACCI_A]; float unirand3(void) { int i,k1,k2; float v; if(fib_seed == 0) { for(i=0;i<FIBONACCI_N;i++) { fib_x[i] = unirand0(); } fib_seed = 1; } k1 = fib_k-FIBONACCI_A; k2 = fib_k-FIBONACCI_B; if(k1 < 0) k1 += FIBONACCI_N; if(k2 < 0) k2 += FIBONACCI_N; if(fib_x[k1] >= fib_x[k2]) v = fib_x[k1] - fib_x[k2]; else v = fib_x[k1] - fib_x[k2] + 1.0; if(v < 0.0) v = 0.0; else if(v > 1.0) v = 1.0; fib_x[fib_k] = v; fib_k++; if(fib_k >= FIBONACCI_N) fib_k = 0; return v; } 125 ПРИЛОЖЕНИЕ . Текст программ генерации непрерывных случайных величин и случайных процессов #include <stdlib.h> #include <values.h> #include <math.h> /* генератор равномерного распределения */ double gen_int(double a, double b) { double z; z=(double)rand()/RAND_MAX; z = a + (b - a)*z; return z; } /* генератор экспоненциального распределения */ double gen_exp(double a) { double z; z=-(1.0/a)*log(((double)rand()/RAND_MAX)+ MINDOUBLE); return z; } /* генератор нормального распределения на основе центральной предельной теоремы */ double gen_normal(double a, double s) { int i; double z; z = 0.0; for(i=0;i<12;i++) 126 { z += 2.0*((double)rand()/RAND_MAX)-1.0; } z = 0.5*z*s + a; return z; } /* текст программы имитации случайного процесса с заданной корреляционной функцией и оценки корреляционной функции по полученной реализации */ double *mv_mod = NULL; double *cv_mod = NULL; int CC; int NMOD; int NP; double *XV = NULL; double *CV = NULL; int NBUF; int PBUF; int N = 0; #define N_4PI 1.3313353638003897127975349179503 /* корреляционная функция */ double ModFunc(double vT, double a, double D) { double v; v = D * exp(-a*a*vT*vT); return v; } void PrepareMod(int P,double dT,double a,double D) { int i,c; double vk; N = 1; XV = new double[P]; CV = new double[P]; NBUF = P; 127 for(i=0;i<NBUF;i++) { XV[i] = 0; CV[i] = 0; } c = P*2+1; NMOD = c; NP = P; mv_mod = new double[c]; cv_mod = new double[c]; for(i=0;i<c;i++) { mv_mod[i] = gen_normal(0,1); vk = (double)(i - P)*dT; cv_mod[i]=(sqrt(2.0*D*a*dT)/N_4PI)*exp(2.0*a*a*vk*vk); } CC = P; } void UnPrepareMod(void) { if(mv_mod) delete[]mv_mod; if(cv_mod) delete[]cv_mod; if(XV) delete[]XV; if(CV) delete[]CV; } double GetModVal(void) { int i,k; double v; v = mv_mod[CC] * cv_mod[NP]; for(i=1;i<NP;i++) { k = CC + i; if(k >= NMOD) k -= NMOD; v += mv_mod[k] * cv_mod[i+NP]; k = CC - i; if(k < 0) k += NMOD; v += mv_mod[k] * cv_mod[NP-i]; 128 } XV[PBUF] = v; return v; } void NextModVal(void) { int k; N++; CC++; if(CC >= NMOD) CC = 0; k = CC - NP - 1; if(k < 0) k+=NMOD; mv_mod[k] = gen_normal(0,1); PBUF++; if(PBUF >= NBUF) PBUF=0; } double GetBuf(int id) { int k; if(id == 0) return XV[PBUF]; k = PBUF - id; if(k < 0) k+=NBUF; return XV[k]; } void AddCorV(void) { double v; int i; if(N <= NBUF) return; v = GetModVal(); for(i=0;i<NBUF;i++) { CV[i] += v * GetBuf(i); } } void FinalizeCor(void) 129 { int i; if(N > NBUF) for(i=0;i<NBUF;i++) { CV[i] /= (double)(N-NBUF); } } void DoModel(void) { int i; double x,v; randomize(); for(i=-300;i<300;i++) { x = (double)i*0.5; v = ModFunc(x,0.05,0.4); Chart2->Series[0]->AddXY(x,v,"",clRed); } PrepareMod(300,0.5,0.05,0.4); for(i=0;i<5000;i++) { v = GetModVal(); AddCorV(); NextModVal(); Chart1->Series[0]->Add(v,"",clGreen); } FinalizeCor(); for(i=0;i<300;i++) { x = (double)i*0.5; v = CV[i]; Chart2->Series[1]->AddXY(x,v,"",clBlue); } UnPrepareMod(); } /* метод обратных функций */ 130 double gen_obr_f(void) { double v1,v2,rv; bool is_gen = false; while(!is_gen) // пока не получим случайное число { v1 = gen_int(0,1); // равномерно распределенные v2 = gen_int(0,1); v1 = SvMin + (SvMax - SvMin) * v1; v2 *= pGen->GetMaxFxValue(); //max плотности if(v2 <= pGen->GetFxValue(v1)) // плотность { rv = v1; is_gen = true; } } return rv; } /* метод кусочной аппроксимации */ double BndAPDV[NUM_INT+1]; // границы интервалов // заполняются перед вызовом процедуры double prepare_kus_apr(void) { int i; BndAPDV[0] = 0; for(i=1;i<= NUM_INT;i++) { /* вычисляем по обратной функции распределения */ BndAPDV[i] = obr_f((double)i/NUM_INT); } } double gen_kus_apr(void) { v1 = gen_int(0,1); // равномерно распределенные v2 = gen_int(0,1); // i = Floor(v1 * (double)ni); // № интервала if(i >= ni) i = ni-1; 131 rv = BndAPDV[i] + v2* (BndAPDV[i+1] – BndAPDV[i]); return rv; } 132 Молчанов Артем Юрьевич Финаев Валерий Иванович ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ВЕЛИЧИН Учебное пособие Ответственный за выпуск Финаев В.И. Редактор Проценко И.А. Корректор Селезнева Н.И. ЛР №020565 от 23.06.97 г. Подписано к печати Формат 60х84 1/16 Бумага офсетная Офсетная печать Усл.п.л. – 8,2 Уч.-изд.л. – 8,0 Заказ № Тираж 150 экз. «С» Издательство Технологического института Южного федерального университета ГСП 17 А, Таганрог, 28, Некрасовский, 44 Типография Технологического института Южного федерального университета ГСП 17А, Таганрог, 28, Энгельса, 1