我需要使用几何分布的随机数生成器
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);
}
但测试只给出了负数。有人发现我的错误或给我建议其他几何分布采样方法吗?
答案 0 :(得分:5)
要生成每次试验成功概率p
的几何,给定函数rand
,返回统一(0,1)结果,伪代码为:
define geometric(p)
return ceiling(ln(1-rand) / ln(1-p))
这会产生多少次试验,直到第一次成功。如果您想要几何的替代定义(在第一次成功之前有多少次失败)减去1或使用floor
而不是ceiling
。