2

在 Java 中,我有一组用户,每个用户都有一个已知均值的泊松分布需求:

import org.apache.commons.math3.distribution.PoissonDistribution;

public class User {
  private int mean;
  private PoissonDistribution dist;
  public void setMean(int mean) {
      this.mean = mean;
      this.poissonDistribution = new PoissonDistribution(mean);
  }
}

...
User u1 = new User(); u1.setMean(20);
User u2 = new User(); u2.setMean(30);
User u3 = new User(); u3.setMean(40);

现在我想计算所有Users 的累积需求低于某个值的概率:

double probabilityBelowX = calculateCumulatedProbability(50, u1, u2, u3); // <- what must this method look like?

我被困在这个问题上,如何在 Java 中解决这个问题。我在数学包中遗漏了什么吗?我知道客户的需求是独立的,所以根据我对泊松分布的了解,我可以简单地将这些值相加。但是我只cumulativeProbability(int x)满足每一个用户的需求,而不是同时满足几个?

请指出我正确的方向,也许我使用的是完全错误的方法。另外,如果这个问题更适合stackexchange的另一个站点,我会移动它。

4

1 回答 1

1

正如您所指出的,独立泊松分布的总和再次是泊松分布,其参数等于原始分布的参数之和。

因此,calculateCumulatedProbability您需要创建一个新PoissonDistribution对象,其均值等于u1,u2u3(PoissonDistribution(20+30+40)在这种情况下) 的均值之和。然后该cumulativeProbability对象上的方法将为您提供所需的概率。

您将需要一个getMean方法,User以便您可以检索各个用户的方法。另外,总是有 3 个用户吗?如果没有,您最好calculateCumulatedProbability只采用两个参数:用户列表和概率计算的值吗?

于 2013-01-11T11:45:06.907 回答