typedef struct AStat // Структура для сохранения статистик
{
double Stat; // Значение статистики
}
TAStat;
typedef TAStat* PAStat; // Указатель на структуру для сохранения статистики
//--------------------------------------------------------------------------//--- Функция int __fastcall compare(void * Item1, void * Item2)
//--- Функция сравнения, используеая при сортировке выборки.
//--- Возвращает:
//--- "-1" если Item1 меньше чем Item2
//--- "1" если Item1 больше чем Item2
//--- "0" если Item1 равно Item2
int __fastcall compare(void * Item1, void * Item2)
{
int R=0; // Возвращаеый результат := 0
PAList Struc1,Struc2; // Структуры для сравнивания
Struc1 = (PAList) Item1; // В Struc1 поещаем Item1
Struc2 = (PAList) Item2; // В Struc2 поещаем Item2
if(Struc1->Random<Struc2->Random) R=-1; // Первый меньше второго R:=-1
if(Struc1->Random>Struc2->Random) R=1; // Первый больше второго R:=1
return(R); // Возвращае результат
};
//--- конец функции int __fastcall compare(void * Item1, void * Item2)------//--- Функция double genrand()
//--- Функция получает случайное число, принадлежащее равномерному
//--- распределению на отрезке (0,1) от выбранного генератора псевдослучайных
//--- чисел.
double genrand()
{
if(Form1->ComboBox1->ItemIndex==0) // Если выбран Mersenne Twister
{
return(genrand_real2()); // генерируем с его помощью
};
if(Form1->ComboBox1->ItemIndex==1) // Если выбран ТТ800
{
return(TT800()); // генерируем с его помощью
};
};
//---конец функции double genrand()-----------------------------------------//--- Функция int Bi(int n, double p)
//--- Генерирует случайное число, принадлежащее биномиальному распределению
int Bi(int n, double p)
{
int R=0; // Возвращаемый результат
for(int i=0;i<n;i++) // Генерируем число
{
if(genrand()<p) R++;
};
return(R); // Возвращаем число
};
//----конец функции int Bi(int n, double p)---------------------------------//---Функция double BiF(double n, double m, double p)
//---Считает теоретическую функцию биномиального распределения для заданного
//---случайного числа и параметров распределения
//--- m - число
//--- n и p - параетры распределения
double BiF(double n, double m, double p)
{
assert((n > 0) && (p >= 0) && (p <= 1)); // Проверяе, что n>0 и [0,1]эp
if (m < 0) // Если число <0
return 0; // вернуть 0
else if (m == 0) // Если число =0
return pow(1-p, n); // вернуть (1-p)^n
else if (m >= n) // Если число >n
return 1; // вернуть 1
else // Иначе, считаем значение функции
return BetaDF(n-m, m+1).value(1-p); // распределения используя ее связь
// с функцией бета распределения
}
//---конец функции double BiF(double n, double m, double p)
//---Функция int G(double p)
//--- Генерирует случайное число, принадлежащее геометрическому распределению
int G(double p)
{
int R=0;
R = ceill(log(genrand())/log(1-p)); // Генерируем число принадлежащее
return(R); // геометрическому распеделению из
// равномерного
};
//---конец функции int G(double p)
//---Функция double GF(double p,double rnd)
//---Считает теоретическую функцию геометрического распределения для заданного
//---случайного числа и параметров распределения
double GF(double p,double rnd)
{
return(1-pow(1-p,rnd)); // Считаем по формуле 1-(1-р)^Rav
};
//---конец функции double GF(double p,double rnd)
//---Функция int P(double lambda)
//--- Генерирует случайное число, принадлежащее распределению Пуассона
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.