Вот функции, м.б. какие нить помогут
//---------------------------------------------------------------------------
// Модуль генерации распределений
#pragma hdrstop
#include "Generate.h"
//---------------------------------------------------------------------------
// Генерация случайной величины, равномерно распреденной в интервале [0, 1]
double GetRand()
{
double r=rand();
r/=RAND_MAX;
return r;
}
//---------------------------------------------------------------------------
// Генерация случайной величины, равномерно распределенной в интервале [a, b]
double GetRand(double a, double b)
{
double r=GetRand();
r=a+(b-a)*r;
return r;
}
//---------------------------------------------------------------------------
// Вычисление обратной функции стандатного нормального распределения
// p - доверитеьный уровень
double InverseNormalDistribution(double p)
{
bool flag=true; // Параметр для учета симметрии распределения
double t;
if (p < 0.5)
p=1-p;
else if (p==0.5)
return 0.0;
else flag=false;
// Разложение в ряд
t=sqrt(-2.0*log(1.0-p));
t-=(2.515517+0.802853*t+0.010328*t*t)/(1.0+1.432788*t+0.189269*t*t+0.001308*t*t*t);
if (!flag)
return t;
else
return -t;
}
//---------------------------------------------------------------------------
// Генерация случайной величины, нормально распределенной с параметрами [0, 1]
double GetNormalDistribution()
{
double r=GetRand();
r=InverseNormalDistribution(r);
return r;
}
//---------------------------------------------------------------------------
// Генерация случайной величины, нормально распределенной с параметрами [m, s*s]
// m - математическое ожидание
// s - среднеквадратическое оклонение
double GetNormalDistribution(double m, double s)
{
double r=GetNormalDistribution();
r=m+s*r;
return r;
}
#pragma package(smart_init)
Добавлено:
Цитата:
int* my_function (int* nMass);
//---------------------------------------------------------------------------
// Модуль генерации распределений
#pragma hdrstop
#include "Generate.h"
//---------------------------------------------------------------------------
// Генерация случайной величины, равномерно распреденной в интервале [0, 1]
double GetRand()
{
double r=rand();
r/=RAND_MAX;
return r;
}
//---------------------------------------------------------------------------
// Генерация случайной величины, равномерно распределенной в интервале [a, b]
double GetRand(double a, double b)
{
double r=GetRand();
r=a+(b-a)*r;
return r;
}
//---------------------------------------------------------------------------
// Вычисление обратной функции стандатного нормального распределения
// p - доверитеьный уровень
double InverseNormalDistribution(double p)
{
bool flag=true; // Параметр для учета симметрии распределения
double t;
if (p < 0.5)
p=1-p;
else if (p==0.5)
return 0.0;
else flag=false;
// Разложение в ряд
t=sqrt(-2.0*log(1.0-p));
t-=(2.515517+0.802853*t+0.010328*t*t)/(1.0+1.432788*t+0.189269*t*t+0.001308*t*t*t);
if (!flag)
return t;
else
return -t;
}
//---------------------------------------------------------------------------
// Генерация случайной величины, нормально распределенной с параметрами [0, 1]
double GetNormalDistribution()
{
double r=GetRand();
r=InverseNormalDistribution(r);
return r;
}
//---------------------------------------------------------------------------
// Генерация случайной величины, нормально распределенной с параметрами [m, s*s]
// m - математическое ожидание
// s - среднеквадратическое оклонение
double GetNormalDistribution(double m, double s)
{
double r=GetNormalDistribution();
r=m+s*r;
return r;
}
#pragma package(smart_init)
Добавлено:
Цитата:
ЗЫ: неужели никто не знает, как написать прототип функции, которая бы в качестве параметров должна была бы принять массив и на выходе тоже возвращала массив.
int* my_function (int* nMass);