확률과 불규칙 신호론 시간에 잠깐 다루어 보았던 것...
Standard Normal random variable
double uniform_rv()
{
int j=1+(int)(100000.0*rand()/(RAND_MAX+1.0));
double value=(double)j/100000;
return value;
}
double std_normal() /* normal random variate generator */
{
double x1, x2, w, y1;
static double y2;
static int use_last = 0;
if (use_last) /* use value from previous call */
{
y1 = y2;
use_last = 0;
}
else
{
do {
x1 = 2.0 * uniform_rv() - 1.0;
x2 = 2.0 * uniform_rv() - 1.0;
w = x1 * x1 + x2 * x2;
} while ( w >= 1.0 );
w = sqrt( (-2.0 * log( w ) ) / w );
y1 = x1 * w;
y2 = x2 * w;
use_last = 1;
}
return(y1);
}
Standard Normal random variable
double uniform_rv()
{
int j=1+(int)(100000.0*rand()/(RAND_MAX+1.0));
double value=(double)j/100000;
return value;
}
double std_normal() /* normal random variate generator */
{
double x1, x2, w, y1;
static double y2;
static int use_last = 0;
if (use_last) /* use value from previous call */
{
y1 = y2;
use_last = 0;
}
else
{
do {
x1 = 2.0 * uniform_rv() - 1.0;
x2 = 2.0 * uniform_rv() - 1.0;
w = x1 * x1 + x2 * x2;
} while ( w >= 1.0 );
w = sqrt( (-2.0 * log( w ) ) / w );
y1 = x1 * w;
y2 = x2 * w;
use_last = 1;
}
return(y1);
}



덧글