【发布时间】:2023-03-18 16:35:01
【问题描述】:
我正在尝试通过使用极坐标以及平均值和西格玛值来生成两个标准正态变量 r1、r2 来生成随机变量。然而,当我运行我的代码时,我不断得到一个“-nan(ind)”作为我的输出。
我在这里做错了什么?代码如下:
static double saveNormal;
static int NumNormals = 0;
static double PI = 3.1415927;
double fRand(double fMin, double fMax)
{
double f = (double)rand() / RAND_MAX;
return fMin + f * (fMax - fMin);
}
static double normal(double r, double mean, double sigma) {
double returnNormal;
if (NumNormals == 0) {
//to get next double value
double r1 = fRand(0, 20);
double r2 = fRand(0, 20);
returnNormal = sqrt(-2 * log(r1)) * cos(2 * PI*r2);
saveNormal = sqrt(-2 * log(r1)) * sin(2 * PI*r2);
}
else {
NumNormals = 0;
returnNormal = saveNormal;
}
return returnNormal*sigma + mean;
}
【问题讨论】: