Python 如何在numpy中指定随机数生成器

Python 如何在numpy中指定随机数生成器,python,numpy,random,montecarlo,Python,Numpy,Random,Montecarlo,我正在使用python构建蒙特卡罗模拟,到目前为止,我一直在使用numpy生成随机变量。然而,我刚刚了解到numpy使用Mersenne Twister算法来生成其随机数,基于我有限的理解,这在蒙特卡罗模拟中是不可取的。我更喜欢使用MRG32k3a,但我也希望利用numpy的分布函数。有没有办法让numpy使用我选择的生成器,或者有没有另一个库可以为我提供与使用我首选的生成器相同的功能?为什么不自己用python编写代码呢 我在上找到了算法的一个示例实现(与上的许多其他示例一起) 如果您担心速度

我正在使用python构建蒙特卡罗模拟,到目前为止,我一直在使用numpy生成随机变量。然而,我刚刚了解到numpy使用Mersenne Twister算法来生成其随机数,基于我有限的理解,这在蒙特卡罗模拟中是不可取的。我更喜欢使用MRG32k3a,但我也希望利用numpy的分布函数。有没有办法让numpy使用我选择的生成器,或者有没有另一个库可以为我提供与使用我首选的生成器相同的功能?

为什么不自己用python编写代码呢

我在上找到了算法的一个示例实现(与上的许多其他示例一起)

如果您担心速度(但首先要分析它!),您可以包装C或F代码,并使用例如CFFI、f2py等直接从python调用它-参见例如

但考虑到它只有几行C代码,用python编写它应该不会太有挑战性,对吧

您还可以在提交拉取请求(或者要求作者很好地包含您选择的生成器)

很抱歉,这不能满足您对分发版的需求,但也许这只是一个开始,会有更好的答案

也许还可以找出为什么梅森不适合你自己的目的——你有没有测试过它,你用什么数字来决定

对你来说可能是一个有用的参考

你能做任何预计算吗


希望这能在某种程度上有所帮助。

也许可以看看这个,它说它包括MRG32k3a
,基于我有限的理解,这在蒙特卡罗模拟中是不可取的
不确定你为什么认为这是真的。MT在很多方面都是可以使用的。不管怎样,如果你想要其他的选择,看看谢谢你们的帮助。Severin,这是我正在学习蒙特卡罗模拟(我正在构建的模拟是为一个无关的项目)课程的一位讲师在课堂上说的,MT在大多数情况下都是好的,但可能不会特别适用于蒙特卡罗模拟。wikipedia页面支持这一点,虽然似乎有办法解决出现的问题,但我不清楚numpy是否自动使用这些解决方法,因此,直接替换似乎是最简单的方法。@KaysKadhi请将此作为一个更好的答案提交,如果它能为OP工作?