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;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.