Исследование Законов распределения. Статистики Колиогорова, страница 15

int P(double lambda)

{

int R=0;

R = ignpoi(lambda);

return(R);

};

//---конец функции int P(double lambda)

//---Функция double PF(double lambda,double rnd)

//---Считает теоретическую функцию распределения Пуассона для заданного

//---случайного числа и параметров распределения

double PF(double lambda,double rnd)

{

assert(lambda > 0);         // Проверяем чтобы ламбда была больше 0

return (rnd < 0) ? 0 : 1-GammaDF(rnd+1).value(lambda); // Считаем основываясь на

// связи с гама функцией

// Распределение Пуассона связано с распределением хи-квадрат, которое в свою

// очередь есть частный случай гама распределения

};

//---конец функции double PF(double lambda,double rnd)

//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//----Инициализация приложения----------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender)

{

DecimalSeparator='.';         // десятичный разделитель := " ."

ComboBox1->ItemIndex=0;       // По уолчанию выбран ГСЧ Mersenne Twister

ComboBox2->ItemIndex=0;       // По уолчанию выбрано Геоенрическое распределение

ComboBox3->ItemIndex=0;

ComboBox2Change(Sender);      // Устанавливаем состояние полей ввода

init();                       // Инициализируем генераторы случайных чисел

}

//---Устанавливаем состояние полей ввода------------------------------------void __fastcall TForm1::ComboBox2Change(TObject *Sender)

{

if(ComboBox2->ItemIndex==0) { StaticText4->Visible=false; Edit2->Visible=false; Edit1->Text=FloatToStr(0.5); Edit2->Text=FloatToStr(0); }

if(ComboBox2->ItemIndex==1) { StaticText4->Visible=true; Edit2->Visible=true; Edit1->Text=FloatToStr(0.5); Edit2->Text=FloatToStr(10); }

if(ComboBox2->ItemIndex==2) { StaticText4->Visible=false; Edit2->Visible=false; Edit1->Text=FloatToStr(0.5); Edit2->Text=FloatToStr(0); }

}

//---Сохранение статистик---------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)

{

if(SaveDialog1->Execute()) {  // Если пользователь выбрал файл и нажал

// кнопку сохранить

ListBox1->Items->SaveToFile(SaveDialog1->FileName);

// Сохраняе в выбранный файл содержимое ListBox1

};

}

//---Собственно генерация выборок и расчет статистик------------------------void __fastcall TForm1::Button1Click(TObject *Sender)

{

//-----Засекаем время

struct timeb t,f;

ftime(&t);

double st,ft,tt;

st = double(t.time) + double(t.millitm)/1000;

//-----Объявление переменных

int random;            // Случайное число хранится в этой переменной до

// помещения в выборку

double F,              // Теоретичнская функция распределения

statis;         // Статистика

AnsiString head;       // Заголовок для файла статистик

//-----Инициализация переменных

PAList AStruct;             //  Указатель на элемент списка "выборка"

PAStat AStruct1;            //  Указатель на элемент списка "статистика"

TList *seed = new TList;    //  Список "выборка"

TList *stat = new TList;    //  Список "статистика"

//-----Формирование заголовка

ListBox1->Items->Clear();   // Очищаем ListBox1

head = ComboBox2->Items->Strings[ComboBox2->ItemIndex]+", "  // Распределение

+ComboBox1->Items->Strings[ComboBox1->ItemIndex];      // Название ГСЧ

if(Edit1->Visible)                                           // Параетры

{                                                           // распределения

head += ", p=" + Edit1->Text;

};

if(Edit2->Visible)

{

head += ", n=" + Edit2->Text;

};                                                          // Размер выборки

head += ", n="+Edit3->Text;                                  // Кол-во выборок

head += ", m="+Edit4->Text;