使用几何分布的随机数发生器

时间:2014-05-07 11:55:19

标签: c# .net random distribution mathnet

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

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);
}

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

1 个答案:

答案 0 :(得分:5)

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

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

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