3

我正在尝试根据幂律分布生成 p2p 网络。如何在java中生成幂律分布?它有图书馆吗?

谢谢 :)

4

4 回答 4

4

如果您不能/不想使用库:

在这种情况下,最简单的方法是计算 CDF(对照Wikipedia进行检查),即函数 F : x -> P(X < x)。然后你用你最喜欢的生成器在 [0,1] 上绘制均匀的随机数 y,然后求解 y = F(x)。这样的 x 的序列是同分布的并且遵循幂律分布。

编辑:答案就在那里

于 2010-07-15T09:33:11.210 回答
3

也许Colt java 库可以提供帮助。它根据许多分布生成随机数。

于 2010-07-15T09:10:48.140 回答
1

Apache Commons Math lib 在我的系统上非常慢(也许我错过了一些东西......)。这个独立的类PowerLaw.java为我工作。

于 2012-08-23T13:47:21.133 回答
1

这个库:https ://github.com/pbloem/powerlaws包含一个幂律生成器,使用如下:

List<Double> data = new Continuous(3.14, 2.5).generate(1000);

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

(免责声明:我写了这个库)。

于 2012-09-18T11:35:06.420 回答