当前位置:   article > 正文

Java泊松分布_common-math3 泊松分布

common-math3 泊松分布

Poisson泊松分布,是一种统计与概率学里常见到的离散概率分布。多出现在当X表示在一定的时间或空间内出现的事件个数这种场合。在一定时间内某交通路口所发生的事故个数,是一个典型的例子。

泊松分布的概率函数为:

P(X=k)=\frac{\lambda ^{k}e^{-\lambda }}{k!}

泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生次数。 泊松分布适合于描述单位时间内随机事件发生的次数。

泊松分布的期望和方差均为λ。

random实现泊松分布

  1. public class Possion {
  2. static long seed;
  3. static double a = 32719, m;
  4. public static double p_rand(double lamda) {
  5. // 泊松分布
  6. double n = 0, p = 1, c = Math.exp(-lamda), u;
  7. do {
  8. u = randomU();
  9. // u = Math.random() ;
  10. p *= u;
  11. System.out.println("u=" + u + " p=" + p + " n=" + n + " c=" + c);
  12. if (p >= c)
  13. n++;
  14. } while (p >= c);
  15. return u;
  16. }
  17. // 线性同余法生成U[0,1) 随机数
  18. public static double randomU() {
  19. seed = (long) ((32719 * seed) % (m - 1));
  20. // System.out.println("seed:"+seed);
  21. return seed / (m - 1);
  22. }
  23. public static void main(String[] args) {// TODO Auto-generated method stub// 随机数种子生成与初始化
  24. seed = System.currentTimeMillis();
  25. m = Math.pow(2, 31);
  26. double uu[] = new double[1000];
  27. int N = 1000;
  28. // 生成 10 个泊松分布分布随机数
  29. for (int i = 0; i < N; i++) {
  30. System.out.println("第" + i + "个");
  31. uu[i] = p_rand(0.2);
  32. }
  33. //计算均值与方差
  34. double sum = 0, sum2 = 0, ave = 0, fangca = 0;
  35. for (int i = 0; i < N; i++) {
  36. sum = sum + uu[i];
  37. sum2 = sum2 + uu[i] * uu[i];
  38. System.out.println("u:" + i + "." + uu[i]);
  39. }
  40. ave = (double) sum / N;
  41. System.out.println("均值:" + ave);
  42. for (int i = 0; i < N; i++) {
  43. // sum = sum + uu[i];
  44. sum2 = sum2 + (uu[i] - ave) * (uu[i] - ave);
  45. }
  46. fangca = sum2 / N;
  47. System.out.println("方差:" + fangca);
  48. }
  49. }

commons-math3实现泊松分布

  1. <dependency>
  2. <groupId>org.apache.commons</groupId>
  3. <artifactId>commons-math3</artifactId>
  4. <version>3.6.1</version>
  5. </dependency>
  1. public static void main(String[] args){
  2. RandomEngine engine = new DRand();
  3. Poisson poisson = new Poisson(lambda, engine);
  4. int poissonObs = poisson.nextInt();
  5. Normal normal = new Normal(mean, variance, engine);
  6. double normalObs = normal.nextDouble();
  7. }
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号