歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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的概率,其取值在區間(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)計算。   

Copyright © Linux教程網 All Rights Reserved