指数分布

来源:互联网 发布:windows官方镜像下载 编辑:程序博客网 时间:2024/04/29 10:46

 double   expntl(double   x)    
  {    
      double   z;                                           //   Uniform   random   number   from   0   to   1    
     
      //   Pull   a   uniform   RV   (0   <   z   <   1)    
      do    
      {    
          z   =   ((double)   rand()   /   RAND_MAX);    
      }    
      while   ((z   ==   0)   ||   (z   ==   1));    
     
      return(-x   *   log(z));    
  }    
     
  哪位牛人帮忙给分析一下    

 

 

 

指数分布的概率密度函数     y=lamda*exp(-lamda*x)       x>=0  
  由此可以计算概率分布函数         y=1-exp(-lamda*x)       x>=0  
  y是   X<x的概率,其取值在区间(0,1)内  
   
  首先,把y当作是在(0,1)区间的均匀分布的随机变量。  
  然后,求y=1-exp(-lamda*x)的逆函数,x=-(1/lamda)*ln(1-y)  
   
  令z=1-y,显然z也是(0,1)区间的均匀分布的随机变量,于是就有x=-(1/lamda)*ln(z)。  
  z可以通过(double)   rand()   /   RAND_MAX计算。原因是rand()   是随机分布函数。  
   
  最终满足指数分布的变量x,就可以通过x=-(1/lamda)*ln(z)计算。   
   

原创粉丝点击