Моделирование датчиков случайных чисел с заданным законом распределения

Министерство Образования Республики Таджикистан

Таджикский Технический Университет

имени М.С. Осими



Кафедра «АСОИиУ»













Лабораторная работа №1

	На тему: Моделирование датчиков случайных чисел с заданным законом распределения









Выполнила:

ст-т. 3-го курса гр. 2202 Б2



Принял: преподаватель кафедры

Ли И.Р.













Душанбе-2010


Лабораторная работа № 2

	Моделирование датчиков случайных чисел с заданным законом распределения

	

	I Цель работы

	

	Целью работы является:

	Практическое освоение методов моделирования случайных чисел с заданным законом распределения

	Разработка и моделирование на ПЭВМ датчика случайных чисел с конкретным законом распределения

	Проверка адекватности полученного датчика

	

	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 )- условная плотность вероятности.

	Переходя к дискретной форме, интеграл  заменяется на сумму и тогда получаем

	

	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. Оценка закона распределения

	Для полученной случайной последовательности 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. Для полученной последовательности произвести оценку математического ожидания, дисперсии, среднеквадратического отклонения.

	
Блок- схема генератора

	

	

начало

	

	

	

Ввод ζNp1,p2

	

	

	

    I=1,N                                                                                                                                                                                                                                                                                        I

	

	

	

p1=p1/N

ζ =RND(ζ)                                

	

	

	

p2=p2/N

ζ<0.7

	

	

	

	

η=10 *ζ-5

η=2

	

	

	

p1=p1+1

	

p2=p2+1

	

	

Печать η

	

	

	

	

	

	

Конец

	

	

	

	Интерфейс программы:

	



	Листинг программы:

	

	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<=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.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