【发布时间】:2014-11-20 17:12:22
【问题描述】:
我必须为泊松分布生成数据。我的范围是 n = 1000 到 100K。其中n是数据元素的数量; k 从 1 到 n 变化。它说使用 lambda 作为 n/2
我从来没有统计过,也不知道如何在这里得到正确的曲线。我可以将 lambda 作为 n/2 喂它,但我是否可以将 K 从 0-n 变化?我试过这个(将 k 作为参数传入),当我绘制数据时,它会上升,而不是鱼尾。我做错了什么,还是我做对了?
谢谢
我有这个来自 Knuth 的 java 代码。
static double poissonRandomNumber(int lambda) {
double L = Math.exp(-lambda);
int k = 0;
double p = 1;
do {
k = k + 1;
double u = Math.random();
p = p * u;
} while (p > L);
return k - 1;
}
【问题讨论】:
-
你需要知道泊松分布的函数是什么才能开始:en.wikipedia.org/wiki/Poisson_distribution。如果您可以使用库,请尝试 Apache Commons Math:commons.apache.org/proper/commons-math/apidocs/org/apache/…
-
函数给出为 f(K,lambda)=Pr(k)= lambda^k e^lambda/k!; e=natural log 2.71...我不知道该怎么办,我不知道我在这里做什么。我试图在图片中插入论坛,但没有成功。
-
这与我发布的链接一致。
-
公共数学还是维基?即使它同意我在这里做错了什么,数据没有遵循曲线?
-
为什么返回类型是
double而不是int? stackoverflow.com/questions/1241555/…