2024-10-02 22:34:17 发布
网友
我正在使用python构建一个montecarlo模拟,目前为止我一直在使用numpy来生成我的随机变量。然而,我刚刚了解到,numpy使用Mersenne Twister算法来生成随机数,基于我有限的理解,这在montecarlo模拟中是不可取的。我更喜欢使用MRG32k3a,但我也希望利用numpy的分布函数。有没有办法让numpy使用我选择的生成器,或者有没有其他库可以让我使用我喜欢的生成器来提供相同的功能?在
为什么不自己用python编写呢?在
我在http://simul.iro.umontreal.ca/rng/MRG32k3a.c找到了该算法的一个示例实现(还有许多其他实现在http://www-labs.iro.umontreal.ca/~simul/rng)
如果你担心速度(但先分析一下!)您可以包装C或F代码,并使用CFFI、f2py等直接从python调用它—请参见示例
https://scipy-lectures.org/advanced/interfacing_with_c/interfacing_with_c.html
但考虑到它只有几行C代码,用python编写代码应该不会太有挑战性,对吧?在
您也可以在https://github.com/bashtage/randomgen提交一个拉请求(或者很好地要求作者包括您选择的生成器)。在
很抱歉,这并不能满足您对发行版的需求,但也许这只是一个开始,会有更好的答案出现。在
或许还可以弄清楚为什么梅森尼对你自己的目的不好——你测试过了吗?你用什么样的功绩来决定?在
https://scicomp.stackexchange.com/questions/23547/parallel-mersenne-twister-for-monte-carlo可能是一个有用的参考资料。在
你能做任何预计算吗?在
希望这对你有点小帮助。在
为什么不自己用python编写呢?在
我在http://simul.iro.umontreal.ca/rng/MRG32k3a.c找到了该算法的一个示例实现(还有许多其他实现在http://www-labs.iro.umontreal.ca/~simul/rng)
如果你担心速度(但先分析一下!)您可以包装C或F代码,并使用CFFI、f2py等直接从python调用它—请参见示例
https://scipy-lectures.org/advanced/interfacing_with_c/interfacing_with_c.html
但考虑到它只有几行C代码,用python编写代码应该不会太有挑战性,对吧?在
您也可以在https://github.com/bashtage/randomgen提交一个拉请求(或者很好地要求作者包括您选择的生成器)。在
很抱歉,这并不能满足您对发行版的需求,但也许这只是一个开始,会有更好的答案出现。在
或许还可以弄清楚为什么梅森尼对你自己的目的不好——你测试过了吗?你用什么样的功绩来决定?在
https://scicomp.stackexchange.com/questions/23547/parallel-mersenne-twister-for-monte-carlo可能是一个有用的参考资料。在
你能做任何预计算吗?在
希望这对你有点小帮助。在
相关问题 更多 >
编程相关推荐