gauss1.c

来自「生成均匀随机数列算法实现和生成高斯随即序列的两种算法实现」· C语言 代码 · 共 22 行

C
22
字号
/*   gauss1.c   产生高斯随机数         */

/*由uniform.c产生(0,1)上的n个相互独立的均匀分布随机数,均值为1/2,方差为1/12*/
/*根据中心极限定理,当n较大时近似有Z=sqrt(12/n)*((r1+r2+...+rn)-n/2) ~ N(0,1)*/
/*取n=12,则Z=(r1+r1+..+r12)-6 ~ N(0,1)*/
/*再通过变换X=mean+Z*sigma得到均值为mean方差为sigma^2的高斯分布随机数X*/

#include "uniform.c"

double gauss1(mean,sigma,s)
double mean,sigma;
long int *s;
{
 int i;
 double x,y;
 double uniform();
 for(x=0,i=0;i<12;i++)
   x+=uniform(0.0,1.0,s);
 x=x-6.0;
 y=mean+x*sigma;
 return(y);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?