指数分布

 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)计算。   
   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值