ЛАБОРАТОРНАЯ РАБОТА ММ- 03
РАЗЫГРЫВАНИЕ ДИСКРЕТНЫХ И НЕПРЕРЫВНЫХ СВ
Цель работы: изучение и программная реализация методов разыгрывания дискретных и непрерывных СВ
ВОПРОСЫ ДЛЯ ИЗУЧЕНИЯ ПО КОНСПЕКТУ ЛЕКЦИЙ:
1. Дискретные случайные величины и их характеристики.
2. Разыгрывание полной группы случайных событий.
3. Разыгрывание непрерывной случайной величины методом обратной функции.
4. Выбор случайного направления в пространстве.
5. Стандартное нормальное распределение и его пересчет для заданных параметров.
6. Метод полярных координат для разыгрывания нормального распределения.
ЗАДАЧА 1. Сформулировать (письменно) правило разыгрывания значений дискретной СВ, закон распределения которой задан в виде таблицы. Составить подпрограмму-функцию для разыгрывания значений СВ с использованием БСВ, получаемых от подпрограммы ГСЧ. Разыграть 50 значений СВ и вывести их на экран.
Где N – номер варианта.
ЗАДАЧА 2. Дана функция плотности распределения f(x) непрерывной случайной величины X.
В отчете записать формулы и вычисление следующих величин:
А) константу нормировки;
Б) функцию распределения F(x);
В) математическое ожидание M(X);
Г) дисперсию D(X);
Д) формулу для разыгрывания значений СВ по методу обратной функции.
Составить подпрограмму-функцию для разыгрывания заданной СВ и получить 1000 значений этой СВ.
Построить гистограмму распределения полученных чисел по 20 отрезкам.
ЗАДАЧА 3. Составить процедуру, позволяющую разыграть параметры случайного направления в пространстве. Разыграть 100 случайных направлений в пространстве.
Использовать встроенный датчик псевдослучайных чисел.
Письменный отчет по лабораторной работе должен содержать:
1) Название и цель работы, группу, фамилию и номер варианта студента;
2) По каждой задаче: -условие, -необходимые формулы и математические преобразования, -имя программного файла, реализующего используемый алгоритм, -результаты вычислений.
Отлаженные программные файлы сдаются вместе с письменным отчетом.
ПРИЛОЖЕНИЕ
Варианты плотности распределения непрерывной СВ
Вар-т |
Плотность распределения СВ |
Вар-т |
Плотность распределения СВ |
Из всех случайных величин проще всего разыгрывать (моделировать) равномерно распределенную величину . Рассмотрим, как это делается.
Возьмем какое-то устройство, на выходе которого с вероятностью могут появляться цифры 0 или 1; появление той или другой цифры должно быть случайным. Таким устройством может быть бросаемая монета, игральная кость (четно - 0, нечетно - 1) или специальный генератор, основанный на подсчете числа радиоактивных распадов или всплесков радиошума за определенное время (четно или нечетно).
Запишем у как двоичную дробь и на место последовательных разрядов будем ставить цифры, выдаваемые генератором: например, . Поскольку в первом разряде с равной вероятностью могут стоять 0 или 1, это число с равной вероятностью лежит в левой или правой половине отрезка . Поскольку во втором разряде тоже 0 и 1 равновероятны, число с равной вероятностью лежит в каждой половине этих половин и т. д. Значит, двоичная дробь со случайными цифрами действительно с равной вероятностью принимает любое значение на отрезке
Строго говоря, разыграть можно только конечное количество разрядов k. Поэтому распределение будет не вполне требуемым; математическое ожидание окажется меньше 1/2 на величину (ибо значение возможно, а значение невозможно). Чтобы этот фактор не сказывался, следует брать многоразрядные числа; правда, в методе статистических испытаний точность ответа обычно не бывает выше 0,1% -103, а условие дает что на современных ЭВМ перевыполнено с большим запасом.
Псевдослучайные числа. Реальные генераторы случайных чисел не свободны от систематических ошибок: несимметричность монеты, дрейф нуля и т. д. Поэтому качество выдаваемых ими чисел проверяют специальными тестами. Простейший тест - вычисление для каждого разряда частоты появления нуля; если частота заметно отлична от 1/2, то имеется систематическая ошибка, а если она слишком близка к 1/2, то числа не случайные - есть какая-то закономерность. Более сложные тесты - это вычисление коэффициентов корреляции последовательных чисел
или групп разрядов внутри числа; эти коэффициенты должны быть близкими к нулю.
Если какая-то последовательность чисел удовлетворяет этим тестам, то ее можно использовать в расчетах по методу статистических испытаний, не интересуясь ее происхождением.
Разработаны алгоритмы построения таких последовательностей; символически их записывают рекуррентными формулами
Такие числа называют псевдослучайными и вычисляют на ЭВМ. Это обычно удобнее, чем использование специальных генераторов. Но для каждого алгоритма есть свое предельное число членов последовательности, которое можно использовать в расчетах; при большем числе членов теряется случайный характер чисел, например - обнаруживается периодичность.
Первый алгоритм получения псевдослучайных чисел был предложен Нейманом. Возьмем число из цифр (для определенности десятичных) и возведем его в квадрат. У квадрата оставим средних цифр, откинув последних и (или ) первых. Полученное число снова возведем в квадрат и т. д. Значения получаются умножением этих чисел на Например, положим и выберем начальное число 46; тогда получим
Но распределение чисел Неймана недостаточно равномерно (преобладают значения что хорошо видно на приведенном примере), и сейчас их редко употребляют.
Наиболее употребителен сейчас несложный и неплохой алгоритм, связанный с выделением дробной части произведения
где А - очень большая константа (фигурная скобка обозначает дробную часть числа). Качество псевдослучайных чисел сильно зависит от выбора величины А: это число в двоичной записи должно иметь достаточно «случайный» хотя его последний разряд следует брать единицей. Величина слабо влияет на качество последовательности, но было отмечено, что некоторые значения оказываются неудачными.
При помощи экспериментов и теоретического анализа исследованы и рекомендуются такие значения: для БЭСМ-4; для БЭСМ-6. Для некоторых американских ЭВМ рекомендуются и эти цифры связаны с количеством разрядов в мантиссе и порядке числа, поэтому для каждого типа ЭВМ они свои.
Замечание 1. В принципе формулы типа (54) могут давать очень длинные хорошие последовательности, если записывать их в нерекуррентном виде и все умножения выполнять без округления. Обычное округление на ЭВМ ухудшает качество псевдослучайных чисел, но тем не менее до членов последовательности обычно годятся.
Замечание 2. Качество последовательности улучшается, если ввести в алгоритм (54) небольшие случайные возмущения; например, после нормализации числа полезно засылать в последние двоичные разряды его мантиссы двоичный порядок числа
Строго говоря, закономерность псевдослучайных чисел должна быть незаметна по отношению к требуемому частному применению. Поэтому в несложных или удачно сформулированных задачах можно использовать последовательности не очень хорошего качества, но при этом необходимы специальные проверки.
Произвольное распределение. Для разыгрывания случайной величины с неравномерным распределением можно воспользоваться формулой (52). Разыграем у и определим из равенства
Если интеграл берется в конечном виде и формула несложна, то это наиболее удобный способ. Для некоторых важных распределений - Гаусса, Пуассона - соответствующие интегралы не берутся и разработаны специальные способы разыгрывания.
Сущность метода Монте-Карло состоит в следующем: требуется найти значение а некоторой изучаемой величины. С этой целью выбирают такую случайную величину Х, математическое ожидание которой равно а: М(Х)=а.
Практически же поступают так: вычисляют (разыгрывают) n возможных значений x i случайной величины Х, находят их среднее арифметическое
И принимают в качестве оценки (приближенного значения) а* искомого числа а. Таким образом, для применения метода Монте-Карло необходимо уметь разыгрывать случайную величину.
Пусть требуется разыграть дискретную случайную величину Х, т.е. вычислить последовательность ее возможных значений х i (i=1,2, …), зная закон распределения Х. Введем обозначения: R- непрерывная случайная величина, распределенная равномерно в интервале (0,1); r i (j=1,2,…) – случайные числа (возможные значения R).
Правило: Для того чтобы разыграть дискретную случайную величину Х, заданную законом распределения
Х х 1 х 2 … х n
P p 1 p 2 … p n
1. Разбить интервал (0,1) оси or на n частичных интервалов:
Δ 1 =(0;р 1), Δ 2 =(р 1 ; р 1+ р 2), …, Δ n = (р 1 +р 2 +…+р n -1 ; 1).
2.Выбрать случайное число r j . Если r j попало в частичный интервал Δ i , то разыгрываемая величина приняла возможное значение х i . .
Разыгрывание полной группы событий
Требуется разыграть испытания, в каждом из которых наступает одно из событий полной группы, вероятности которых известны. Разыгрывание полной группы событий сводится к разыгрыванию дискретной случайной величины.
Правило: Для того чтобы разыграть испытания, в каждом из которых наступает одно из событий А 1, А 2, …, А n полной группы, вероятности которых р 1, р 2 , …, р n известны, достаточно разыграть дискретную величину Х со следующим законом распределения:
P p 1 p 2 … p n
Если в испытании величина Х приняла возможное значение x i =i, то наступило событие А i .
Разыгрывание непрерывной случайной величины
Известна функция распределения F непрерывной случайной величины Х. Требуется разыграть Х, т.е. вычислить последовательность возможных значений х i (i=1,2, …).
А. Метод обратных функций. Правило 1. х i непрерывной случайной величины Х, зная ее функцию распределения F, надо выбрать случайное число r i , приравнять его функции распределения и решить относительно х i полученное уравнение F(х i) = r i .
Если известна плотность вероятности f(x), то используют правило 2.
Правило 2. Для того чтобы разыграть возможное значение х i непрерывной случайной величины Х, зная ее плотность вероятности f, надо выбрать случайное число r i и решить относительно х i уравнение
или уравнение
где а – наименьшее конечное возможное значение Х.
Б. Метод суперпозиции. Правило 3. Для того чтобы разыграть возможное значение случайной величины Х, функция распределения которой
F(x) = C 1 F 1 (x)+C 2 F 2 (x)+…+C n F n (x),
где F k (x) – функции распределения (k=1, 2, …, n), С k >0, С i +С 2 +…+С n =1, надо выбрать два независимых случайных числа r 1 и r 2 и по случайному числу r 1 разыгрывать возможное значение вспомогательной дискретной случайной величины Z (по правилу 1):
p C 1 C 2 … C n
Если окажется, что Z=k, то решают относительно х уравнение F k (x) = r 2 .
Замечание 1. Если задана плотность вероятности непрерывной случайной величины Х в виде
f(x)=C 1 f 1 (x)+C 2 f 2 (x)+…+C n f n (x),
где f k – плотности вероятностей, коэффициенты С k положительны, их сумма равна единице и если окажется, что Z=k, то решают (по правилу 2) относительно х i относительно или уравнение
Приближенное разыгрывание нормальной случайной величины
Правило. Для того чтобы приближенно разыграть возможное значение х i нормальной случайной величины Х с параметрами а=0 и σ=1, надо сложить 12 независимых случайных чисел и из полученной суммы вычесть 6:
Замечание . Если требуется приближенно разыграть нормальную случайную величину Z с математическим ожиданием а и средним квадратическим отклонением σ, то, разыграв возможное значение х i по приведенному выше правилу, находят искомое возможное значение по формуле: z i =σx i +a.
Обозначим равномерно распределенную СВ в интервале (0, 1) через R, а ее возможные значения (случайные числа) - r j .
Разобьем интервал }