我需要一个使用几何分布的随机数发生器
http://en.wikipedia.org/wiki/Geometric_Distribution
我试过了:

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

但测试结果只是负数。是否有人发现了我的错误,或给我其他方法的几何分布抽样建议?

最佳答案

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

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

这就产生了多少次试验直到第一次成功。如果您希望几何图形的替代定义(第一次成功之前的失败次数)减去1或使用floor而不是ceiling

09-19 08:39