我需要一个使用几何分布的随机数发生器
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
。