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

2024-10-02 22:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 函数功能numpy算法利用办法montecarlomersenne
1条回答
网友
1楼 · 发布于 2024-10-02 22:34:17

为什么不自己用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可能是一个有用的参考资料。在

你能做任何预计算吗?在

希望这对你有点小帮助。在

相关问题 更多 >