Случайным называют такое явление, которое при неоднократном его воспроизведении протекает каждый раз несколько по-иному, т. е. факторы, влияющие на явление, определены неполностью. Случайная величина — это такая переменная величина, которая в зависимости от случайного исхода некоторого эксперимента может принять одно из своих возможных значений, но неизвестно, какое именно. Обычно случайные величины обозначаются прописными буквами конца латинского алфавита: X, Y, Z. Возможные значения случайных величин обозначаются соответствующими строчными
буквами. Числовое значение х, которое приняла случайная величина Х в каком-либо конкретном эксперименте, называется реализацией этой случайной величины. Множество всех значений, которые может принимать случайная величина X, называется областью возможных значений X.
Случайное событие, состоящее в том, что случайная величина примет какое-либо определенное значение, записывается в виде равенств или неравенств. Например, запись Х=х обозначает случайное событие, состоящее в том, что случайная величина X примет значение х, запись а < Y < b обозначает событие, состоящее в том, что случайная величина Y примет какое-нибудь значение из интервала [а, b ].
Самой полной характеристикой случайной величины является закон ее распределения. Законом распределения случайной величины называется любое соотношение, устанавливающее связь между возможными значениями случайной величины и вероятностями, соответствующими этим значениям. Наиболее употребительным законом распределения случайной величины является ее функция распределения.
Функция F (x) распределения случайной величины X (иногда называемая интегральной функцией распределения вероятностей) — это такая функция вещественной переменной х, значение которой при каждом х равно вероятности выполнения неравенства Х< х, т. е. F (x) определяется для каждого х следующим образом:
F (x) = Р{Х < х) для -оo < х < oo,
где Р(Х< х) — вероятность события Х< х. Иными словами, F (x) — это вероятность того, что после выполнения эксперимента случайная величина X получит значение, не превышающее число х. Функция распределения F (x) имеет следующие свойства:
□ для всех значений х:
0< F (x)< 1;
□ F (x) является неубывающей функцией, т. е.:
Люб(xb x 2: xt < x 2): F (x 1) < F (x 2);
□ F (x) изменяется от 0 до 1:
Lim x-->-oo F(x) = 0, lim x-->oo F(x) = 1.
Если случайная величина X принимает значения только из конечного или счетного множества, она называется дискретной. Вероятность, с которой дискретная величина X принимает значение х), определяется так:
р(хд = Р(Х=х i), i = 1,2,...,
причем выполняется равенство:
Функция распределения дискретной случайной величины X в соответствии с данным ранее определением запишется так:
В имитационном моделировании обычно используются случайные величины, множество возможных значений которых составляет непрерывный интервал. Будем говорить, что случайная величина X является непрерывной, если существует неотрицательная функция J { x), которая определена для всех вещественных значений х и имеет следующее свойство: для любого множества С вещественных чисел справедливо:
с дополнительным условием
Функция / называется плотностью распределения (вероятностей) случайной величины X. Функция F распределения случайной величины X определится теперь так:
С некоторыми допущениями можно считать, что f (x) — это производная функции F (x) (рис. 10.1).
В частности, если а и b — любые вещественные числа, для которых а < = b, и / = [а, b ] — интервал вещественных чисел, то справедливо соотношение (рис. 10.2):
Метод Монте - Карло
Способ имитационного моделирования процессов с помощью генерации последовательностей случайных величин получил общее название метод Монте-Карло, поскольку именно рулетка является одним из самых старых генераторов случайных чисел. Метод Монте-Карло используется не только для анализа систем в условиях неопределенности. Рассмотрим одно из самых простых применений этого метода для определения вполне детерминированной величины — для вычисления значения числа я. Возьмем квадрат со стороной 2R, тогда его площадь 4R2. Площадь вписанной в этот квадрат окружности равна ПиR2. Отношение площади окружности к площади квадрата равно я/4. Построим имитационную модель, которая дает возможность вычислить число я с любой требуемой точностью, так. Будем генерировать пару случайных чисел в интервале [- R, R ] с помощью генератора случайных чисел с равномерным распределением и рассматривать эти числа как пары
координат { X, Y) случайной точки. Отношение числа точек, которые попадут внутрь вписанной окружности (т. е. тех, у которых X 2 + Y 2 < R 2), к числу всех сгенерированных точек внутри квадрата, будет приближаться к числу л/4. Построим такую модель в AnyLogic.
Создайте новый проект chisloPi. В окне редактора корневого активного объекта Main введите один параметр в (радиус вписанной окружности) со значением 100 и две переменные: n — число сгенерированных случайных точек и NOval — число точек, которые попадают внутрь вписанной окружности. Их начальные значения установите 0. Кроме того, введите переменную EstPi, которая будет подсчитывать оценку числа п в процессе моделирования, а также переменную Err, которая будет отражать относительную погрешность оценки. Все эти переменные вещественные.
Задача нашей имитационной модели — многократно генерировать случайные координаты точки в интервале (-R, R), добавлять в переменную NOval единицу, если очередная точка попадает внутрь окружности радиуса R, и подсчитывать оценку числа я по формуле EstPi=4*NOval/N. Организуем генерацию точек с помощью циклического статического таймера. За каждый шаг по времени для быстроты будем генерировать сразу 100 точек. Введите таймер в поле редактора модели, и в поле Действие при срабатывании окна Свойств таймера введите следующий код:
for (int i=0; i<100; i++) {
N++;
double X = uniform) -R, R); // генерируем случайные координаты
double Y = uniform) -R, R);
if(X*X + Y*Y < R*R) // если точка попадает внутрь окружности,
NOval++; // то увеличиваем NOval
}
EstPI = 4*NOval/N; // подсчитываем оценку числа л
2rr = abs(Math.PI - EstPI)/Math.PI; // подсчитываем ошибку
Для вычисления ошибки здесь в качестве точного значения числа п используется константа pi класса Math языка Java.
Соответствующая модель с именем chisloPi находится в папке ModelExamples\Part II. Для наглядности в этой модели добавлена анимация с именем animation, и в код Действие при срабатывании окна свойств таймера добавлены следующие операторы:
ShapeOval dot = new ShapeOval(X, Y, 1.); // порождается новый
//графический объект - окружность радиуса 1 с координатами X, Y dot.setLineColor(color); //у окружности устанавливаем цвет color dot.setFillColor(color); // это цвет заливки и цвет линии animation.add(dot); // эта точка добавляется в анимацию
Цвет color устанавливается либо красным, если точка попадает в o вписанную окружность, либо синим в противном случае. После запуска модели вы увидите результат, представленный на рис. 10.3.
Состояние модели, представленное на рис. 10.3, показывает, что прошло 3000 испытаний. При случайной генерации внутрь окружности радиуса R попали 2356 точек. Это определяет значение Пикак 4*2356/3000 = 3.1413(3). Относительная погрешность определения числа Пи равна 8*10-5, т. е. менее одной сотой процента.