Скачиваний:
24
Добавлен:
02.05.2014
Размер:
179.2 Кб
Скачать

Министерство образования РФ

Уфимский государственный авиационный технический университет

Кафедра технической кибернетики

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

Получение на ЭВМ равномерно распределенных

псевдослучайных чисел

Выполнили:

студенты гр. УТС-411

Ганиев И. С.

Беляев В. В.

Садыков Р. Р.

Проверила:

Хасанова Н. В.

Уфа 2007

Цель работы.

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

Критерий Пирсона.

Методы ( в дальнейшем, тесты ) проверки качества псевдослучайных чисел делятся на три группы:

а) тесты проверки случайности последовательности псевдослучайных чисел;

б) тесты проверки равномерности закона распределения;

в) тесты проверки независимости последовательности.

Первые два теста основываются на статистических критериях согласия, из которых наиболее употребительным является статистический критерий согласия ( Пирсона ).

Пусть имеется  - случайная величина, о законе распределения которой выдвигается некоторая гипотеза, Х - множество возможных значений . Разобьем Х на m попарно непересекающихся множеств Х1, Х2,  ,Хm, таких, что

P  Хj  = pj  0 при j = 1, 2, , m,

p1 + p2 +  pm = P  Х  = 1.

Выберем N независимых значений 1, 2,  ,N и обозначим через коли-чество значений Хj. Очевидно, что математическое ожидание равно Npj, т.е. М [ ] = Npj.

В качестве меры отклонения всех от Npj выбирается величина ( 1 )

При достаточно большом N величина хорошо подчиняется закону распределения с ( m - 1) степенью свободы:

P , ( 2 )

где - плотность распределения с ( m - 1) степенью свободы.

С помощью формулы ( 2 ) при заданном уровне значимости  ( обычно  = 0.95 ) можно определить нижнюю и верхнюю границы области возможного принятия гипотезы ( доверительного интервала ). Для этого нужно решить соответственно следующие уравнения:

P  = = , ( 3 )

P   = = , ( 4 )

где  = 1  , r = m - 1.

Значения интегралов берутся из таблицы.

P { х } = p,

где х = или х = , p =  или p = .

Эмпирическое математическое ожидание вычисляется по формуле

,

эмпирическая дисперсия

их теоретические значения соответственно 0.5 и 1 / 12.

Для математического ожидания можно для заданного уровня значимости  определить также доверительный интервал:

где  определяется из уравнения:

= .

Интеграл вероятностей Ф ( х ) = возьмём из таблицы.

Функция распределения и гистограмма частот.

Полезно бывает сравнить также теоретическую функцию распределения и теоретическую плотность распределения случайной величины  с экспери-ментально полученными функцией распределения и гистограммой частот.

Известно, что для случайной величины, равномерно распределенной на интер-вале ( 0, 1 ):

По известной выборке из N значений случайной величины  эксперимен-тальная функция распределения определяется следующим образом:

где равно количеству значений   х.

Гистограмма частот, являющаяся аналогом плотности распределения, строится следующим образом. Весь интервал ( хmin, хmax ) от наименьшего значения хmin до наибольшего значения хmax полученной выборки случайной величины разбивается на q равных промежутков длины h. Затем определяется число значений i выборки, попавших в i-ый промежуток, после чего для каждого 1  i  q строится прямоугольник с основанием на i-ом промежутке и высотой i / h. Полученный чертеж называется гистограммой частот или просто гистограммой. Отметим, что при таком построении площадь i-го прямоугольника равна h  ( i / h ) = i, т.е. числу значений случайной величины, попавших в i-ый промежуток, а площадь всей гистограммы равна объему выборки.

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

uses crt, graph;

const N=100;

var i,j,gd,gm: integer;

x,hi2,d,c: real;

p: array[1..5] of real;

l: array[1..5] of integer;

q: array[1..N] of real;

g: string[8];

begin

randomize;

clrscr;

p[1]:=0.1;

p[2]:=0.25;

p[3]:=0.2;

p[4]:=0.4;

p[5]:=0.05;

hi2:=0;

c:=0;

for i:=1 to 5 do

l[i]:=0;

for i:=1 to N do begin

x:=random;

q[i]:=x;

c:=c+x;

j:=0;

d:=0;

repeat

j:=j+1;

d:=d+p[j];

until d>=x;

l[j]:=l[j]+1;

end;

for i:=1 to 5 do

hi2:=hi2+sqr(l[i]-N*p[i])/(N*p[i]);

initgraph(gd,gm,'d:\prog\f1.7\bgi');

setcolor(9);

moveto(10,10);

outtext('pj ');

for i:=1 to 5 do begin

str(p[i]:6:2,g);

outtext(g);

end;

moveto(10,25);

outtext('vj ');

for i:=1 to 5 do begin

str(l[i]:6,g);

outtext(g);

end;

outtextxy(10,60,'X^2 prinadlezit doveritelnomu intervalu (0,71<=X^2<=9,5)?');

outtextxy(10,70,'X^2 = ');

str(hi2:5:3,g);

outtextxy(60,70,g);

c:=c/N;

str(c:5:3,g);

outtextxy(10,400,'Empiricheskoe mat. ozidanie:');

outtextxy(10,410,'e~=');

outtextxy(40,410,g);

outtextxy(90,410,'(doverit. interval 0,444<=e~<=0,556)');

for i:=1 to N do

x:=x+sqr(q[i]-c);

x:=x/(N-1);

str(x:5:3,g);

outtextxy(10,420,'Empiricheskaya dispersiya:');

outtextxy(10,430,'s^2=');

outtextxy(50,430,g);

setcolor(14);

line(10,21,350,21);

line(40,10,40,35);

if (hi2>=0.71) and (hi2<=9.5) then

outtextxy(10,80,'da') else

outtextxy(10,80,'net');

line(50,110,50,340);

line(50,330,370,330);

line(46,115,50,110); line(50,110,54,115);

line(365,326,370,330); line(365,334,370,330);

outtextxy(100,100,'Funcii raspredeleniya');

setcolor(10);

d:=0;

for i:=1 to 5 do begin

line(round(300*d)+50,330-round(200*d),round(300*d)+50,330-round(200*(d+p[i])));

d:=d+p[i];

line(round(300*d)+50,330-round(200*d),round(300*(d-p[i]))+50,330-round(200*d));

setcolor(14);

line(round(300*d)+50,327,round(300*d)+50,333);

line(47,330-round(200*d),53,330-round(200*d));

str(d:3:2,g);

if i<>5 then outtextxy(round(300*d)+35,340,g);

outtextxy(10,327-round(200*d),g);

setcolor(6);

setlinestyle(1,0,2);

line(55,330-round(200*d),round(300*(d-p[i]))+50,330-round(200*d));

setlinestyle(0,0,1);

setcolor(10);

end;

line(10,330,50,330);

line(235,218,250,218);

setcolor(12);

line(235,228,250,228);

setcolor(14);

outtextxy(15,105,'F(x)');

outtextxy(373,337,'xj');

outtextxy(347,315,'1');

outtextxy(255,215,'teoretich. F(x)');

outtextxy(255,225,'experiment. F(x)');

setcolor(13);

line(420,130,420,330);

line(420,330,630,330);

line(417,135,420,130); line(423,135,420,130);

line(625,327,630,330); line(625,333,630,330);

outtextxy(390,328-N,'100');

outtextxy(375,120,'vj/pj');

outtextxy(610,335,'pj');

setcolor(9);

outtextxy(450,110,'Gistogramma chastot');

d:=0;

for i:=1 to 5 do begin

d:=d+p[i];

line(round(200*(d-p[i]))+420,330-round(l[i]/p[i]),

round(200*d)+420,330-round(l[i]/p[i]));

line(round(200*d)+420,330-round(l[i]/p[i]),

round(200*d)+420,330);

line(round(200*(d-p[i]))+420,330-round(l[i]/p[i]),

round(200*d)+420,330);

line(round(200*(d-p[i]))+420,330-round(l[i]/p[i]),

round(200*(d-p[i]))+420,330);

end;

setlinestyle(1,0,2);

setcolor(6);

line(419,330-N,630,330-N);

setlinestyle(0,0,1);

readln;

x:=0;

d:=0;

setcolor(12);

for i:=1 to 5 do begin

line(round(300*d)+50,330-round(200*x),round(300*d)+50,330-round(200*(x+l[i]/N)));

x:=x+l[i]/N;

d:=d+p[i];

line(round(300*d)+50,330-round(200*x),round(300*(d-p[i]))+50,330-round(200*x));

end;

readln;

closegraph;

end.

Результаты работы программы.

N=100

β=0,95

pj

0,1

0,25

0,2

0,4

0,05

vj

6

28

20

40

6

χ2 = 2,16

χ2 принадлежит доверительному интервалу 0,71<= χ2 <=9,5

Эмпирическое мат. ожидание:

e` = 0,538 (доверительный интервал 0,444<=e`<=0,556)

незначительно отличается от теоретического (M[x]=0,5).

Эмпирическая дисперсия:

s2 = 0,095, что близко к теоретическому значению s2 = 0,083.

Критерий согласия Пирсона показал, что распределение случайной величины можно считать (с уровнем значимости β=0,95) равномерным.

Вывод.

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

Соседние файлы в папке Modelup_q