Моделирование датчиков случайных чисел с заданным законом распределения
СОДЕРЖАНИЕ: Проектирование датчика случайных чисел, пригодного для моделирования случайной последовательности с заданным законом распределения. Методы моделирования. Разработка алгоритма и программы датчика. Исследование свойств выработанной им последовательности.Министерство Образования Республики Таджикистан
Таджикский Технический Университет
имени М.С. Осими
Кафедра «АСОИиУ»
Лабораторная работа №1
На тему:Моделирование датчиков случайных чисел с заданным законом распределения
Выполнила:
ст-т. 3-го курса гр. 2202 Б2
Принял: преподаватель кафедры
Ли И.Р.
Душанбе-2010
Лабораторная работа № 2
Моделирование датчиков случайных чисел с заданным законом распределения
I Цель работы
Целью работы является:
1. Практическое освоение методов моделирования случайных чисел с заданным законом распределения
2. Разработка и моделирование на ПЭВМ датчика случайных чисел с конкретным законом распределения
3. Проверка адекватности полученного датчика
II Теоретические сведения
1. Основные методы моделирования случайных последовательностей с заданным законом распределения
При исследовании и моделировании различных сложных систем в условиях действия помех возникает необходимость в использовании датчиков случайных чисел с заданным законом распределения. Исходным материалом для этого является последовательность x 1, x 2…. xn с равномерным законом распределения в интервале [0,1] . Обозначим случайную величину, распределенную равномерно через (кси).
Тогда равномерно-распределенные случайные числа будут представлять собой независимые реализации случайной величины , которые можно получить с помощью стандартной функции RND ()– программно реализованной на ПЭВМ в виде генератора случайных чисел с равномерным законом распределения в интервале [0,1] . Требуется получить последовательность y 1, y 2,.. 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,
если
ya
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 )- условная плотность вероятности.
Переходя к дискретной форме, интеграл заменяется на сумму и тогда получаем
f
(x
)=Pj
*fj
(x
) (28)
где 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. Оценка закона распределения
Для полученной случайной последовательности y 1, y 2,… , yn с заданным законом распределения необходимо провести оценку соответствия заданного закона распределения, который реализует смоделированный датчик случайных чисел. Поэтому для последовательности y 1, y 2,… , 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
Y(i) = 2
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=x0.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.Print (0.7)
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