使用MathNet在C#中给定指数的幂律分布

时间:2010-04-07 12:29:30

标签: c# math distribution mathdotnet

我目前正在开展一个项目,我需要生成多个值(最好是浮点数或双精度数),遵循具有给定指数的幂律分布!

我被建议使用MathNet.Iridium库来帮助我。我遇到的问题是,如果存在任何文档,文档就不应该如此明确!

我看到多个分布符合幂律分布的一般概念,但我无法确定一个好的分布用于某个指数作为参数。

有没有人在这方面有更多的经验,可以给我一些提示或建议吗?

1 个答案:

答案 0 :(得分:1)

要生成所选分布的值,您可以使用逆累积分布函数,如wikipedia中所述。

一步一步,这看起来像:

  1. 选择您喜欢的分发函数。
  2. 使用笔和纸计算逆累积分布函数。
  3. 基于单位间隔上的均匀分布生成值。 Random在这里会很好。
  4. 将值输入ICDF。
  5. 结果是使用您选择的分布函数随机选择的值。

    如果您遇到第2步的问题,也许https://mathoverflow.net/的人可以帮助您。

    编辑:如果您只需要使用指数伽玛的任何幂律分布,这将生成一个值:

    double r = 1.0 / Math.Pow(1-new Random().NextDouble(), 1.0/(gamma+1));