1

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

有人建议我使用 MathNet.Iridium 库来帮助我。我遇到的问题是,如果有的话,文档并不像应有的那样明确!

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

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

4

1 回答 1

1

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

一步一步,这看起来像:

  1. 选择你喜欢的分布函数。
  2. 使用笔和纸计算逆累积分布函数。
  3. 根据单位间隔上的均匀分布生成一个值。Random在这里会做得很好。
  4. 将值输入您的 ICDF。

结果是使用您选择的分布函数随机选择的值。

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

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

double r = 1.0 / Math.Pow(1-new Random().NextDouble(), 1.0/(gamma+1));
于 2010-04-07T13:01:10.583 回答