Java实现指数分布


  1. import java.util.*;  
  2. public class zhishu {  
  3.     public static void main(String[] args) {  
  4.         double x, z;  
  5.         double lamda;  
  6.           
  7.         System.out.println("请输入lamda的值:");  
  8.         Scanner scanner = new Scanner(System.in);  
  9.         lamda = scanner.nextDouble();  
  10.           
  11.         for(int i=0; i<10; i++) {  
  12.             z = Math.random();  
  13.             x = -(1 / lamda) * Math.log(z);  
  14.             System.out.println(x);  
  15.         }  
  16.     }  
  17. }  

指数分布的概率密度函数:y=lamda*exp(-lamda*x)    x>=0   

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

相关内容