首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

高斯随机数有关问题

2012-09-16 
高斯随机数问题下面一段代码是在网上找的产生以均值为mean 方差为segma的正态分布的随机数的方法#include

高斯随机数问题
下面一段代码是在网上找的产生以均值为mean 方差为segma的正态分布的随机数的方法
#include "math.h"  
#include "uniform.c"  
   
double gauss2(double mean,double sigma,long int *s)  
{double u1,u2,v1,v2,z,x,y;  
 double uniform(double ,double ,long int *);  
  do  
  {u1=uniform(0.0,1.0,s);  
  u2=uniform(0.0,1.0,s);  
  v1=2*u1-1.0;  
  v2=2*u2-1.0;  
  x=v1*v1+v2*v2;  
  }  
 while(x>1);  
 z=sqrt(-(2*log(x)/x))*v1;  
 y=mean+sigma*z;  
 return(y);  
}  
问题是,不知道该算法的正确性,也就是不太懂该算法的是怎么推到出来的??不知哪位好汉讲解讲解!!谢谢!!

[解决办法]
这是Box-Muller变换的极坐标形式。
Box-Muller变换是用来将均匀分布的随机变量给变换到高斯分布的。采用极坐标形式是为了能抑制浮点误差而数值稳定。

热点排行