МОДЕЛИРОВАНИЕ ДИСКРЕТНОЙ СЛУЧАЙНОЙ ВЕЛИЧИНЫ
End.
Begin
Begin
Var
Begin
Begin
Var
p:real; {вероятность отказа прибора}
r1,r2,r3:real; {случайные числа, моделирующие вероятность отказа блоков}
i:integer; {счетчик цикла }
n:integer; {число испытаний}
m:integer; {счетчик числа отказов прибора}
write('Введите значение числа испытаний n');
readln(n);
m:=0;
for i:=1 to n do
r1:=random;
r2:=random;
r3:=random;
if(r1<1/6) OR (r2<1/6) OR (r3<1/6)
thenm:=m+1;
end;
p:=m/n;
writeln('Вероятность отказа прибора равна',p)
х |
у |
Рассмотрим применение метода статистических испытаний для нахождения числа π.
Пример 35.3. Нахождение числа π методом статистических испытаний.
Решение:
1. Поместим круг радиусом ½ в центр квадрата со стороной 1.
2. Будем случайным образом выбирать точки внутри этого квадрата (применяя генератор случайных чисел) – п точек.
3. Подсчитываем число точек, попавших внутрь круга (т).
4. Вероятность попадания точки внутрь круга есть р ≈ т/п. С другой стороны, в силу геометрического определения вероятность события находится как На плоскости мерой является площадь, следовательно, вероятность попадания внутрь круга равна отношению площади круга к площади квадрата, т.е. р= = (R – радиус квадрата, R=1/2; а – сторона квадрата, а=1). Тогда р= . Получили, что . Расчет числа π будет тем точнее, чем большее количество точек п будет выбрано.
Блок схема нахождения числа π имеет вид:
– число испытаний |
п – число испытаний |
т:=0 обнуление счетчика числа точек, попавших в круг |
i:=1 переменная-счетчик цикла |
i>n |
Присвоение значений х, у при помощи генератора случайных чисел |
(х-1/2)2+(у-1/2)2≤1/4 |
т:=m+1- подсчет числа точек, попавших в круг |
i:=i+1 |
pi:=4*т/п вычисление числа π |
Проверка условия: лежит ли точка внутри круга с центром (1/2; 1/2) и радиусом 1/2 |
да |
да |
нет |
нет |
Составим программу реализации данного алгоритма на языке Turbo Pascal:
program pi;
pi:real; {значение числа π}
x,y;real; {координаты случайных точек внутри квадрата}
i:integer; {счетчик цикла }
n:integer; {число испытаний}
m:integer; {счетчик числа точек, попавших в круг}
write('Введите значение числа испытаний n');
readln(n);
m:=0;
for i:=1 to n do
x:=random;
y:=random;
if(х-1/2)*(х-1/2)+(у-1/2)*(у-1/2)<=1/4
thenm:=m+1;
end;
pi:=4*m/n;
writeln('Приближенное значение пи равно',pi)
Контрольные вопросы:
1. Какой процесс называют моделированием?
2. В чём заключается сущность метода статистических испытаний?
3. Какой прибор в ЭВМ называют физическим генератором?
4. Какую последовательность чисел называют псевдослучайной? Приведите пример одного из методов её получения.
5. Решите задачу: Составьте блок-схему алгоритма (программу на языке Turbo Pascal) нахождения определенного интеграла , если при х [0;1] методом статистических испытаний. Указание: Значение интеграла равно площади соответствующей криволинейной трапеции.
При использовании метода статистических испытаний для решения различных задач необходимо уметь моделировать случайные величины с различными законами распределений. Рассмотрим принцип моделирования дискретной случайной величины. Дискретная случайная величина задается законом распределения:
Х | х1 | х2 | … | хn |
Р | p1 | p2 | … | pn |
где в верхней строке даны значения случайной величины xi, а в нижней – соответствующие вероятности pi ( ).
Рассмотрим единичный отрезок. Разделим его на п частей, длины которых равны р1, р2, р3…рп соответственно.
р1 |
р2 |
р3 |
рп |
х1 |
х2 |
х3 |
хп |
… |
С помощью генератора случайных чисел будем получать значения случайной величины из промежутка [0;1]: r1, r2, r3…rk. Если случайная величина попадает в i-й промежуток, то считаем, что дискретная случайная величина принимает значение хi. Рассмотрим моделирование ДСВ на примере.
Пример 36.1. Выполните моделирование дискретной случайной величины, заданной следующим законом распределения:
Х | |||
Р | 0,3 | 0,2 | 0,5 |
Решение: Разделим единичный отрезок на п частей, длины которых равны 0,2; 0,3 и 0,5 точками 0,3 и 0,5.
0 |
0,5 |
0,3 |
хп |
1 |
2 |
С помощью генератора случайных чисел будем получать значения случайной величины из промежутка [0;1]: r1, r2, r3…rk. Если
0≤ri<0,3, то Х=0;
0,3≤ri<0,5, то Х=1;
0,5≤ri<1, то Х=2 (аналог интегральной функции распределения).
Блок-схема алгоритма и программа на языке Turbo Pascal будут выглядеть следующим образом:
program DSV;