Можете ли вы воспроизвести в Python старые генераторы псевдослучайных чисел в Matlab? - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь проанализировать случайные потоки случайных чисел в python.В частности, я изучаю следующие псевдослучайные потоки из matlab: mt19937ar (Twister Mersenne), mcg16807 (LCG) и swb2712 (модифицированный вычитание с генератором заимствований).Вот справочная страница для PRNG в Matlab.

Я знаю, что Mersenne Twister является генератором случайности по умолчанию, используемым в python, и я верю в numpy, mcg16807 также должен быть реплицируемым, так как этоLCG, но я не уверен, как реплицировать swb2712 в python, так как он может быть проприетарным по отношению к matlab, и я не могу найти исходный код.Возможно ли то, что я пытаюсь сделать, или я должен просто прибегнуть к помощи matlab и назвать это днем?

1 Ответ

0 голосов
/ 15 февраля 2019

Из этого блога, кажется, он основан на вариантах алгоритма зиккурата Джорджа Марсальи (для генерации нормально распределенных случайных чисел) https://blogs.mathworks.com/cleve/2015/05/18/the-ziggurat-random-normal-generator/

Две полезные ссылки ...

Джордж Марсаглия и В.В. Цанг, "Метод зиккурата для генерации случайных величин".Журнал статистического программного обеспечения 5, 1-7, 2000 http://www.jstatsoft.org/v05/i08

Юрген А. Доорник, "Улучшенный метод зиккурата для генерации нормальных случайных выборок".PDF, Nutfield College, Оксфорд, 2005 http://www.doornik.com/research/ziggurat.pdf

Эта презентация также описана как swb2712: Модифицированный генератор вычитания с заимствованием, с задержками 27 и 12 ... http://profmsaeed.org/wp-content/uploads/2009/08/MATLAB-V.ppt

Надеюсь, эта помощь!

...