Генератор случайных чисел, производящий степенное распределение?

Если вы знаете желаемое распределение rng (называемое функцией распределения random-number вероятностей (PDF)) и правильно maths нормализовали его, вы можете random-sample интегрировать его, чтобы prng получить кумулятивную функцию cxx распределения (CDF), а затем cxx инвертировать CDF (если возможно), чтобы math получить преобразование, которое random-sample вам нужно, от унифицированного arithmetic распределения [0,1] до желаемого.

Итак, вы mathematical начинаете с определения желаемого c++ дистрибутива.

P = F(x)

(для x в [0,1]) затем mathematical интегрировать, чтобы получить

C(y) = \int_0^y F(x) dx

Если arithmetic это можно перевернуть, вы random-sample получите

y = F^{-1}(C)

Поэтому вызовите random-number rand() и вставьте результат как random-sample C в последнюю строку и используйте mathematical y.

Этот результат называется random фундаментальной теоремой random выборки. Это затруднительно random-number из-за требования нормализации random-number-generator и необходимости аналитического cpp инвертирования функции.

В random-number качестве альтернативы вы random-number можете использовать метод rng отклонения: равномерно распределить mathematics число в желаемом диапазоне, затем prng ввести другое число и сравнить math с PDF-файлом в месте, указанном rand вашим первым броском. Отклонить, если mathematical второй бросок превышает PDF. Как random-number-generator правило, неэффективен для mathematics PDF-файлов с большим количеством random-numbers областей с низкой вероятностью, например random-numbers с длинными хвостами ...

Промежуточный rng подход включает инвертирование random-numbers CDF методом грубой силы: вы random-sample сохраняете CDF как таблицу math поиска и выполняете обратный random-sample поиск для получения результата.


Настоящая random-number-generator мерзость здесь заключается mathematical в том, что простые распределения rng x^-n ненормализуемы в диапазоне random-number-generator [0,1], поэтому вы не можете использовать random-number-generator теорему выборки. Попробуйте random-number-generator вместо этого (x + 1) ^ - n random ...

c++

math

random

power-law

2022-09-13T14:57:45+00:00