Я создаю симуляцию Монте-Карло с использованием python и до сих пор использовал numpy для генерации моих случайных переменных. Однако я только что узнал, что numpy использует алгоритм Mersenne Twister для создания своих случайных чисел, что, исходя из моего ограниченного понимания, нежелательно в симуляциях Монте-Карло. Я бы предпочел использовать MRG32k3a, но я также хотел бы воспользоваться функциями распределения numpy. Есть ли способ заставить numpy использовать генератор по моему выбору или есть другая библиотека, которая даст мне ту же функциональность с возможностью использования моего предпочтительного генератора?
Как указать генератор случайных чисел в numpy
Ответы (1)
Почему бы вам не закодировать это самостоятельно на питоне?
Я нашел пример реализации алгоритма по адресу http://simul.iro.umontreal.ca/rng/MRG32k3a.c (со многими другими на http://www-labs.iro.umonreal.ca/~simul/rng)
Если вы беспокоитесь о скорости (но сначала профилируйте ее!), вы можете обернуть код C или F и вызвать его непосредственно из python, используя, например, CFFI, f2py и т. д. - см., например.
https://scipy-lectures.org/advanced/interfacing_with_c/interfacing_with_c.html
Но, учитывая, что это всего несколько строк кода на C, это не должно быть слишком сложно на Python, верно?
Вы также можете отправить запрос на вытягивание по адресу https://github.com/bashtage/randomgen (или спросить автору приятно включить выбранный вами генератор).
Мне жаль, что это не отвечает вашей потребности в дистрибутивах, но, возможно, это только начало, и появится лучший ответ.
Также, возможно, выясните, почему Mersenne не годится для ваших собственных целей - проверяли ли вы его и какие показатели качества вы используете для принятия решения?
https://scicomp.stackexchange.com/questions/23547/parallel-mersenne-twister-for-monte-carlo может оказаться полезным для вас.
Можете ли вы сделать какие-либо предварительные вычисления?
Надеюсь, это хоть немного поможет.
which based on my limited understanding is not desireable in monte carlo simulations
не знаю, почему вы думаете, что это правда. MT вполне подходит для многих применений. В любом случае, если вам нужна альтернатива, взгляните на github.com/bashtage/randomgen. - person Severin Pappadeux   schedule 31.01.2019