c语言产生随机的高斯分布

参考http://www.cnblogs.com/tsingke/p/6194737.html

采用box-muller方法:

​

#include

#include ​

double gaussrand2(double mu,double sigma){​

  static double u,v;

  static int phase=0;

  double z;

  if(phase==0){

    u=rand()/(RAND_MAX+1.0);

    v=rand()/(RAND_MAX+1.0);

    z=sqrt(-2.0*log(u))*sin(2.0*pi*v);

  }

  else{

    z=sqrt(-2.0*log(u))*cos(2.0*pi*v);

  }

  phase=1-phase;

  return(mu+z*sigma);

}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注