Java:幂律分布

3
我试图根据幂律分布生成P2P网络。如何在Java中生成幂律分布?是否有任何库可用?谢谢 :)
4个回答

4
如果您不能/不想使用库:
在这种情况下,最简单的方法是计算出CDF(与维基百科进行比较),即函数F:x -> P(X < x)。然后,您可以使用您喜欢的生成器在[0,1]上生成均匀随机数y,并解决y = F(x)。这些x的序列具有相同的分布,并遵循幂律分布。
编辑:答案在那里

+1 链接到其他答案。 - Stephan202

3
也许Colt Java库可以帮助你。它可以根据多种分布生成随机数。

1
这个库:https://github.com/pbloem/powerlaws 包含一个幂律生成器,使用方法如下:
List<Double> data = new Continuous(3.14, 2.5).generate(1000);

这将使用3.14作为最小值和2.5作为指数,从幂律分布生成1000个点。它还具有离散分布和连续近似的离散分布。所有这些分布也可适合现有数据。

(免责声明:我编写了此库)。


对于PowerLaw拟合,这个软件包是否已经按顺序排序集合以查找alpha? - 1EnemyLeft
据我所记,数据不需要排序才能让估计器工作。只有在运行KS测试时,数据才会被排序(在副本中)。 - Peter

1

Apache Commons Math库在我的系统上运行得相当慢(也许我错过了什么……)。这个独立的类PowerLaw.java对我很有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接