Я пытаюсь создать сеть p2p в соответствии с распределением закона власти. Как генерировать распределение закона власти в java? есть ли у него библиотека?Java: распределение права власти
спасибо :)
Я пытаюсь создать сеть p2p в соответствии с распределением закона власти. Как генерировать распределение закона власти в java? есть ли у него библиотека?Java: распределение права власти
спасибо :)
Apath Commons Math library имеет implementation for Zipf's distribution, который является степенным законом.
Может библиотека Colt Java может помочь. Он генерирует случайные числа в соответствии со многими distributions.
Если вы не можете/не хотите использовать библиотеку:
В этом случае самый легкий путь, чтобы отработать CDF (проверить это против Wikipedia), то есть функция F : x -> P (X < x). Затем вы рисуете равномерные случайные числа y на [0,1] с вашим любимым генератором, и вы решаете y = F (x). Последовательность таких х одинаково распределяется и следует за распределением степенного закона.
Edit: the answer is there
Apache Commons Math Lib был довольно медленным на моей системе (может быть, я что-то пропустил ...). Этот автономный класс PowerLaw.java работал для меня.
Этой библиотека: https://github.com/pbloem/powerlaws содержит генератор степенного, используется следующим образом:
List<Double> data = new Continuous(3.14, 2.5).generate(1000);
Это создает 1000 точек из закона распределения мощности с 3.14, как минимальным значением и 2.5 в качестве показателя. Он также имеет дискретное распределение и непрерывное приближение дискретного распределения. Все эти распределения также могут соответствовать существующим данным.
(Отказ от ответственности: я написал эту библиотеку).
+1 для ссылки на другой ответ. – Stephan202