#include <stdlib.h>
#include <math.h>
//若a不是inf,则返回非0值,否则返回0
#define ISINF(a) ((a) <= DBL_MAX && (a) >= -DBL_MAX)
//产生一个以miu为均值,sigma为均方差的高斯分布的随机变量,结果需要使用上面的宏来判断是否为-inf
double gaussrand(double miu, double sigma)
{
double U1, U2;
double Z, X;
//产生两个服从U(0,1)分布的随机变量
U1 = (double)rand() / RAND_MAX;
U2 = (double)rand() / RAND_MAX;
//这里的log是自然对数
Z = sqrt(-2 * log(U2))*cos(2 * 3.1415926 * U1);
X = miu + sigma*Z;
return X;
}
C语言产生一个以miu为均值,sigma为均方差的高斯分布的随机变量
最新推荐文章于 2021-05-19 11:00:52 发布