Справка на компанию ОАО 'Седьмой Континент'
Министерство
Образования Республики Таджикистан
Таджикский
Технический Университет
имени М.С.
Осими
Кафедра
«АСОИиУ»
Лабораторная
работа №1
На тему: Моделирование
датчиков случайных чисел с заданным законом распределения
Выполнила:
ст-т. 3-го курса гр. 2202
Б2
Принял: преподаватель
кафедры
Ли И.Р.
Душанбе-2010
Лабораторная
работа № 2
Моделирование
датчиков случайных чисел с заданным законом распределения
I Цель работы
Целью работы является:
1.
Практическое
освоение методов моделирования случайных чисел с заданным законом распределения
2.
Разработка и
моделирование на ПЭВМ датчика случайных чисел с конкретным законом
распределения
3.
Проверка
адекватности полученного датчика
II Теоретические сведения
1. Основные методы
моделирования случайных последовательностей с заданным законом распределения
При исследовании и
моделировании различных сложных систем в условиях действия помех возникает
необходимость в использовании датчиков случайных чисел с заданным законом
распределения. Исходным материалом для этого является последовательность x1,x2….xn с равномерным законом распределения в интервале [0,1].
Обозначим случайную величину, распределенную равномерно через ζ(кси).
Тогда
равномерно-распределенные случайные числа будут представлять собой независимые
реализации случайной величины ζ, которые можно получить с помощью
стандартной функции RND (ζ)–
программно реализованной на ПЭВМ в виде генератора случайных чисел с
равномерным законом распределения в интервале [0,1]. Требуется получить
последовательность y1,y2,..yn независимых реализаций случайной
величины η, распределенных по заданному закону распределения. При этом
закон распределения непрерывной случайной величины может быть задан
интегральной функцией распределения:
F(y)= P(ksiy) (1)
или плотностью
вероятности
f(y)=F’(y) (2)
Функции f(y) и F(y) могут быть заданы графически или аналитически.
Для получения случайной
величины η с функцией распределения F(y) из случайной величины ζ,
равномерно-распределенной в интервале [0,1], используются различные
методы. К основным методам моделирования случайных чисел с заданным законом
распределения относятся:
- метод обратной функции
- метод отбора или
исключения
- метод композиции.
2. Метод обратной
функции
Если ζ-
равномерно-распределенная на интервале [0,1] случайная величина, то
искомая случайная величина может быть получена с помощью преобразования:
η=F-1 (ζ) (3)
Где F-1 (ζ) - обратная функция по отношению
к функции распределения F(ζ)
F(y)
1
ζ
0 η y
Рис 1 Функция
распределения F(ζ)
Действительно, при таком
определении случайной величины η имеем:
P(ηy)=P{F-1(ζ)y}=P{ ζ F(y) }= F(y) (4)
В данной цепочке равенств
первое равенство следует из (3), второе из неубывающего характера
функций F(ζ) и F-1 (ζ)
и третье из равномерного в интервале [0,1] распределения величин ζ.
Таким образом, если
задана функция распределения F(y), то для получения случайной последовательности с
таким распределением необходимо найти ее обратную функцию.
Для нахождения обратной
функции можно использовать два метода: аналитический и графический.
3.Метод отбора или
исключения
Данный метод удобнее
использовать, если требуемый закон распределения задан плотностью вероятности f(y). В отличии от метода обратной функции метод отбора или
исключения для получения одного требуемого случайного числа требует не одного
равномерно- распределенного случайного числа, а двух, четырех, шести или более
случайных чисел. В этом случае область возможных значений η
представляет конечный отрезок (a,b), а плотность вероятности f(y) ограничена сверху значением fmax (Рис.7). Тогда область значений η*
и ζ* можно ограничить ступенчатой кривой:
0, если y<a
g(y)= fmax, если a y b
(25)
0, если y>b
Затем берутся с помощью
генератора случайных чисел (RND(ζ)) два равномерно-распределенных числа ζ1 и ζ2
, по которым определяются равномерные на интервале [a,b] независимые величины:
η ’=a + (b-a)*ζ1
ζ’=fmax* ζ2
(26)
Где a,b – границы возможных значений случайной величины
η,
fmax- максимальное значение функции f(y) (Рис.7)
f(y)
g(y)
fmax
f(y)
ζ
a η
’ b
Рис.7 Заданная
плотность вероятности
Если ζ’ f (η ’) , то η ’ принимается в качестве
очередной реализации случайной величины η. В противном
случае η ’ отбрасывается и берется следующая пара
равномерно- распределенных случайных чисел ζ1 и
ζ2 . Такая процедура повторяется до тех пор, пока мы не
получим требуемого количества случайных чисел с заданной плотностью
вероятности.
4. Метод композиции
Метод композиции
основывается на представлении плотности вероятности fη (x) по формуле полной вероятности:
fη (x)= (27)
Где H(z)=P(ζz)– интегральная функция распределения случайной величины
ζ;
P(x/z )- условная плотность вероятности.
Переходя к дискретной
форме, интеграл заменяется на сумму и тогда получаем
где Pj=1
(29)
fj (x) -условная плотность вероятности
Таким образом, для любой
заданной плотности вероятности ее фигура единичной площади, ограниченной осью x и кривой fη(x), разбивается на произвольное число простых не
пересекающихся частей gj (i=1,k),с площадями Pj (j=1,k),
(Рис.8)
Рис.8Разбивка
плотности вероятности на отдельном участке
fη(x)
g1 (Р1)
g2 (Р2) g3 (Р3)
x
g1 (Р1)
x
Рис. 9 Условные плотности
вероятности
g2
(Р2)
x
g3
(Р3)
x
Условные плотности
вероятности имеют вид (Рис.9)
Для полученных условных
плотностей вероятности одним из предыдущих методов определяются случайные
последовательности, которые в сумме дадут требуемую случайную
последовательность с заданной плотностью вероятности.
5. Оценка закона
распределения
Для полученной случайной
последовательности y1, y2,…,yn с заданным законом распределения
необходимо провести оценку соответствия заданного закона распределения, который
реализует смоделированный датчик случайных чисел. Поэтому для
последовательности y1, y2,…,yn строится статистическая функция
распределения
F* (y) (Рис. 10). На этом же графике строится
интегральная функция распределения F(y) для
заданного закона распределения и производится сопоставление F*(y) и F(y). Согласие закона проверяется по критерию Колмогорова.
Для этого вычисляется статистика:
Ди=maxF*(y) - F(y) (30)
Для конечных решений и
распределения статистики Ди получены пороговые значения в форме таблиц (Таблица
1.). По этой таблице для заданных объемов последовательности и и
значению статистики Ди определяется уровень значимости .
Если гипотеза верна то
статистика Ди* имеет в пределе при n распределение Колмогорова и
квантили уровня P= (1-2) близки к 1. Это значит, что
полученный генератор случайных чисел вырабатывает последовательность с заданным
законом распределения. Если значения статистики Ди не попадают в
пороговые значения, то такой генератор не годится для пользования.
F(y)
F(y)
1
F*(y)
0.5 Dn {
y
y1 y2 y3 y4 …….yn-1
yn
Рис.10Оценка
распределения
III Содержание исследования
Исследование, проводимое в
данной работе, заключается в получении программного датчика случайных чисел,
пригодного для моделирования случайной последовательности с заданным законом
распределения. При этом необходимо разработать алгоритм и программу датчика, а
затем исследовать свойства выработанной им последовательности. При проведении
исследований необходимо:
1.По двадцати числам (n=20) выведенным на печать построить статистическую
функцию распределения F*(y)(рис.10) На этом же графике построить
интегральную функцию распределения F(y) для
заданного преподавателем закона распределения. Сопоставив значения F*(y)и F(y), вычислить статистику Ди (30).
2. Составить блок- схему и программу
для ПЭВМ, в которой следует предусмотреть построение статистического
ряда и вычисление статистики Ди по критерию Колмогорова.
3.По таблице пороговых значений
статистики Ди произвести оценку распределения.
4. Для полученной последовательности
произвести оценку математического ожидания, дисперсии, среднеквадратического
отклонения.
Блок- схема генератора
Интерфейс программы:
Листинг программы:
Private Sub
Command1_Click()
Dim n As
Integer
Dim p1, p2 As
Integer
Dim Y() As
Variant, X As Double
p1 = 0: p2 =
0: m = 0: d = 0
List1.Clear
Randomize
X = 0.5
n =
Val(Text1.Text)
ReDim Y(n) As
Variant
For i = 1 To n
X = Rnd(X)
List1.AddItem
("x(" + Str(i) + ")=" + Str(X))
If X < 0.7
Then
p1 = p1 + 1
m = m +
Y(i)
List1.AddItem ("y(" + Str(i) + ")=" + Str(Y(i)))
Else
p2 = p2 + 1
Y(i) = 10 *
X - 5
m = m +
Y(i)
List1.AddItem ("y(" + Str(i) + ")=" + Str(Y(i)))
End If
Next i
List1.AddItem
("кол. точек с вер-ю 0.7: p1=" + Str(p1))
List1.AddItem
("кол. точек с вер-ю 0.3: p2=" + Str(p2))
List1.AddItem
("ВЕРОЯТНОСТИ:")
List1.AddItem
(" 0.4<=x<0.7 --- 0" + Str(p1 / n))
List1.AddItem
(" 0.7<=x<=1 --- 0" + Str(p2 / n))
m = m / n
List1.AddItem
("мат ожидание = " + Str(m))
For i = 1 To n
d = d + (Y(i)
- m) ^ 2
Next i
d = d / (n -
1)
b = Sqr(d)
List1.AddItem
("диссперсия = " + Str(d))
List1.AddItem
("сререднекв откл = " + Str(b))
'построение интегральной
функции
Picture1.Scale (-2, 11)-(11, -2)
Picture1.Line
(0, -2)-(0, 11)
Picture1.Line
(-2, 0)-(11, 0)
Picture1.PSet
(-1, 11)
Picture1.Print
("f(x)")
Picture1.PSet
(10.5, -0.3)
Picture1.Print
("x")
Picture1.PSet
(-0.7, 4)
Picture1.Print
("0.4")
Picture1.PSet
(-0.7, 7)
Picture1.Print
("0.7")
Picture1.PSet
(-0.7, 10)
Picture1.Print
("1")
Picture1.PSet
(2, -0.3)
Picture1.Print
("2")
Picture1.PSet
(5, -0.3)
Picture1.Print
("5")
For i = 0 To
11 Step 0.001
If i < 2
Then
l = 4
Else
If i <
5 Then
l = (0.1
* i + 0.5) * 10
Else
l = 10
End If
End If
Picture1.PSet
(i, l)
Next i
Picture1.Line
(2, 4)-(2, 7)
'построение
обратной функции
Picture2.Scale
(-2, 11)-(11, -2)
Picture2.Line
(0, -2)-(0, 11)
Picture2.Line
(-2, 0)-(11, 0)
Picture2.PSet
(-1, 11)
Picture2.Print
("x")
Picture2.PSet
(10.5, -0.3)
Picture2.Print
("f(x)")
Picture2.PSet
(-0.7, 2)
Picture2.Print
("2")
Picture2.PSet
(-0.7, 5)
Picture2.Print
("5")
Picture2.PSet
(4, -0.3)
Picture2.Print
("0.4")
Picture2.PSet
(7, -0.3)
Picture2.PSet
(10, -0.3)
Picture2.Print
("1")
For i = 4 To
10 Step 0.001
If i < 7
Then
l = 2
Else
l = i - 5
End If
Picture2.PSet
(i, l), vbRed
Next i
Picture2.Line
(4, 0)-(4, 2), vbRed
Picture2.Line
(10, 5)-(10, 11), vbRed
End Sub