【问题标题】:Random Number Generator using Geometric Distribution使用几何分布的随机数生成器
【发布时间】:2014-06-24 09:23:32
【问题描述】:

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

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

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

【问题讨论】:

  • 没有时间深入研究,但这可能会回答您的问题:link
  • 能展示一下Sample函数的实现吗?
  • 感谢您指出错误。新版本显然还没有在 nuGet 上。也许,我只是添加一个减号...
  • 这已在 v3.0.0-alpha8 中修复,并且也包含在 NuGet 上的(截至今天最新的)v3.0.0-beta01 包中。在 v3.0 最终版之前,NuGet 仅在您启用预发布包时才会列出它们。
  • 有关该问题的更通用方法,请参阅ericlippert.com/2012/02/21/generating-random-non-uniform-data

标签: c# .net random distribution mathnet-numerics


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-10-17
    • 2023-04-04
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多