4

我需要一个使用几何分布的随机数生成器

http://en.wikipedia.org/wiki/Geometric_Distribution

我试过MathNet.Numerics.Distributions

public void GeometricTest()
{
    var geometric = new Geometric(0.1);
    int back = geometric.Sample();
    Assert.Greater(back, -1);
}

但测试只给出负数。有人发现我的错误或就其他采样几何分布的方法给我建议吗?

4

1 回答 1

5

p为了在每次试验中生成具有成功概率的几何图形,给定一个rand返回统一(0,1)结果的函数,伪代码是:

define geometric(p)
  return ceiling(ln(1-rand) / ln(1-p))

这会产生多少次试验,直到第一次成功。如果您想要几何的替代定义(第一次成功之前的失败次数)减去 1 或使用floor而不是ceiling.

于 2014-05-08T22:10:31.847 回答