Теми рефератів
Авіація та космонавтика Банківська справа Безпека життєдіяльності Біографії Біологія Біологія і хімія Біржова справа Ботаніка та сільське гос-во Бухгалтерський облік і аудит Військова кафедра Географія
Геодезія Геологія Держава та право Журналістика Видавнича справа та поліграфія Іноземна мова Інформатика Інформатика, програмування Історія Історія техніки Комунікації і зв'язок Краєзнавство та етнографія Короткий зміст творів Кулінарія Культура та мистецтво Культурологія Зарубіжна література Російська мова Маркетинг Математика Медицина, здоров'я Медичні науки Міжнародні відносини Менеджмент Москвоведение Музика Податки, оподаткування Наука і техніка Решта реферати Педагогіка Політологія Право Право, юриспруденція Промисловість, виробництво Психологія Педагогіка Радіоелектроніка Реклама Релігія і міфологія Сексологія Соціологія Будівництво Митна система Технологія Транспорт Фізика Фізкультура і спорт Філософія Фінансові науки Хімія Екологія Економіка Економіко-математичне моделювання Етика Юриспруденція Мовознавство Мовознавство, філологія Контакти
Українські реферати та твори » Информатика, программирование » Перевірка гіпотези про нормальність закону розподілу експериментальних даних

Реферат Перевірка гіпотези про нормальність закону розподілу експериментальних даних


Перевірка гіпотези про нормальність закону розподілу експериментальних даних


1. Мета роботи

Змоделювати роботу генератора випадкових двійкових чисел, що має закон розподілу, заданого з допомогою моделі Гільберта; обмеженої послідовності 0 та 1.

2. Основна частина

В якості вхідних послідовності вибрали наступну:

2) 1100101010111100001000010000001010101111000010010000100111100100

Моделювання випадкової послідовності проводилася засобами мови С + + (середа Borland Builder C + + )

Текст програми

генератор двійковий число Гільберт

// --------------------------------------------- ------------------------------

# include

# include

# include

# include

// --------------------------------------------- ------------------------------

# include

# pragma hdrstop

# include "Systemsimulation.h"

// --------------------------------------------- ------------------------------

# pragma package (smart_init)

# pragma resource "*. dfm"

TMainForm * MainForm;

// --------------------------------------------- ------------------------------

__fastcall TMainForm :: TMainForm (TComponent * Owner)

: TForm (Owner)

{

}

// --------------------------------------------- ------------------------------

// Вивід в полі RichEdit із завданням кольору виведеного тексту

// REditAddColor (RichEdit1, "Test", clRed);

void __fastcall TMainForm :: REditAddColor (TRichEdit * RichEditX, AnsiString Text, TColor Color)

{

// HideCaret (RichEditX-> Handle);

RichEditX-> SelAttributes-> Color = Color;// задаємо колір тексту

RichEditX-> Lines-> Add (Text) ;//виводимо текст

RichEditX-> Perform (EM_LINEINDEX, RichEditX-> Lines-> Count-1, 0) ;//встановлюємо позицію каретки

RichEditX-> Perform (EM_SCROLLCARET, 0, 0) ;//прокручуємо поле до позиції каретки

}

// --------------------------------------------- ------------------------------

// Грунтуючись на вхідної послідовності формуємо закон розподілу

void __fastcall TMainForm :: ZakonRaspr (AnsiString InSequence, double * P)

{

// P0// P1// P00// P01// P10// P11

P [0] = 0; P [1] = 0; P [2] = 0; P [3] = 0; P [4] = 0; P [5] = 0;

int i;

// за певним алгоритму формуємо закон розподілу

for (i = 1; i <= InSequence.Length (); i + = 2)

{

switch (((AnsiString) InSequence [i] + (AnsiString) InSequence [i +1]). ToInt ())

{

case 00:

{

P [0] + = 2 ;//P0

P [2] + +;// P00

} break;

case 01:

{

P [0] + + ;//P0

P [1] + + ;//P1

P [3] + + ;//P01

} break;

case 10:

{

P [1] + + ;//P1

P [0] + + ;//P0

P [4] + + ;//P10

} break;

case 11:

{

P [1] + = 2 ;//P1

P [5] + +;// P11

} break;

}

}

P [2]/= InSequence.Length ()/2 ;//P00/(довжина вхідної послідовності розділена на 2)

P [3]/= InSequence.Length ()/2 ;//P01/(довжина вхідної послідовності розділена на 2)

P [4]/= InSequence.Length ()/2 ;//P10/(довжина вхідної послідовності розділена на 2)

P [5]/= InSequence.Length ()/2 ;//P11/(довжина вхідної послідовності розділена на 2)

P [0]/= InSequence.Length ();// P0/(довжина вхідної послідовності)

P [1]/= InSequence.Length ();// P1/(довжина вхідної послідовності)

}

// --------------------------------------------- ------------------------------

// генерує випадкове число з плаваючою комою в заданому діапазоні

double __fastcall TMainForm :: Randouble (double min, double max)

{return (Double) rand ()/(double) RAND_MAX * (max-min) + min;

}

// --------------------------------------------- ------------------------------

// генеруємо послідовність з випадкових чисел

AnsiString GenSequence;

AnsiString __fastcall TMainForm :: GenModel (double * P, int Count)

{

double Pi1, Pi2, Pi3, Pi4;

GenSequence = "";

Pi1 = P [2];

Pi2 = P [2] + P [3];

Pi3 = P [2] + P [3] + P [4];

Pi4 = P [2] + P [3] + P [4] + P [5];

double rnd;

for (Int i = 0; i

{

rnd = Randouble (0.0, 1.0);

if (Rnd

if ((Rnd> = Pi1) && (rnd

if ((Rnd> = Pi2) && (rnd

if ((Rnd> = Pi3) && (rnd

return GenSequence;}

// --------------------------------------------- ------------------------------

// моделювання випадкової послідовності двійкових чисел

void __fastcall TMainForm :: ModelSlPosl (double * P, int Count, bool Prn)

{

double ** Experiment = new double * [3];

for (Int i = 0; i <3; i + +)

{experiment [i] = New double [6];

ZakonRaspr (GenModel (P, Count), experiment [i]);

}

REditAddColor (RichEdit1, clBlue);

REditAddColor (RichEdit1, "| Довжина | | Номер досвіду | Середнє | Теоретичне | | ", ClBlue);

REditAddColor (RichEdit1, "| Послідовності | Параметри | 1 | 2 | 3 | значення | значення | Помилка | ", clBlue);

REditAddColor (RichEdit1, clBlue);

AnsiString PrnScr;

double SrZnach, Err;

AnsiString Prametru [6] = {"P0", "P1", "P00", "P01", "P10", "P11"};

for (int i = 0; i <= 5; i + +)

{SrZnach = (Experiment [0] [i] + experiment [1] [i] + experiment [2] [i])/3;

Err = Fabs (P [i] - (experiment [0] [i] + experiment [1] [i] + experiment [2] [i])/3);

PrnScr.sprintf ("|% 18d |% 9s |% 5.3lf |% 5.3lf |% 5.3lf |% 9.3lf |% 15.3lf |% 6.3lf |", Count, Prametru [i], experiment [0] [i], experiment [1] [i], experiment [2] [i], SrZnach, P [i], Err); REditAddColor (RichEdit1, PrnScr, clBlue);

switch (i)

{case 0:

{LineP0-> Add (SrZnach, "При N = "+ (AnsiString) Count, clRed);

if (Prn) LineP0-> Add (P [i], "Теорет.", clRed);

} break;

case 1:

{

LineP1-> Add (SrZnach, "При N = "+ (AnsiString) Count, clGreen);

if (Prn) LineP1-> Add (P [i], "Теорет.", clGreen);

} break;

}

}

for (Int i = 0; i <3; i + +) {delete [] experiment [i];}

delete [] experiment;

}

// --------------------------------------------- ------------------------------

void __fastcall TMainForm :: StartSimulationClick (TObject * Sender)

{LineP0-> Clear ();

LineP1-> Clear ();

RichEdit1-> Lines-> Clear ();

StartSimulation-> Enabled = False;

double P [6];

// формуємо закон розподілу

ZakonRaspr (InSequence-> Lines-> Strings [0], P);

// проводимо моделювання випадкової послідовності двійкових чисел

// для різних довжин послідовностей

ModelSlPosl (P, 100);

ModelSlPosl (P, 1000);

ModelSlPosl (P, 10000, true);

StartSimulation-> Enabled = True;}

// --------------------------------------------- ------------------------------

При моделюванні використовувався генератор випадкових чисел з рівномірним розподілом: при моделюванні події А, що настає з імовірністю Р, береться випадкове число х з рівномірного розподілу на інтервалі (0, 1) і порівнюється з Р. Якщо х ≤ Р, то вважається, що подія А наступило, в іншому випадку настало подія ДЂ.

Моделювання випадкової послідовності двійкових чисел проводилося для різних довжин послідовностей (N = 100, N = 1000, N = 10000), результати якого представлені на рис. 1, 2

Рис. 1


Рис. 2


3. Висновок

При моделюванні

У ході виконання завдання змоделювали роботу генератора випадкових двійкових чисел, підкоряється рівномірному закону розподілу, заданого за допомогою моделі Гільберта; обмеженої послідовності 0 та 1. Ми представили закони розподілу випадкових чисел, заданих в неявному вигляді, у вигляді гістограм, а далі за допомогою мови програмування С + + забезпечили процедуру генерування випадкових чисел, з різними тривалостями їх послідовності, відповідних вищевказаного закону розподілу. З рис.1, 2 видно, що при збільшенні довжини послідовності експериментально отримані дані наближаються до теоретичних даними.



Друкувати реферат
Замовити реферат
Реклама
Наверх Зворотнiй зв'язок