歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java實現指數分布

Java實現指數分布

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

指數分布的概率密度函數: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