你能在 python 中复制 matlab 的旧伪随机数生成器吗?

我正在尝试在 python 中分析随机数的随机流。具体来说,我正在研究来自 matlab 的以下伪随机流:mt19937ar(Mersenne Twister)、mcg16807(LCG)和 swb2712(带有借位生成器的修改减法)。这是matlab 的 PRNG的参考页面

我知道 Mersenne Twister 是 python 中使用的默认随机生成器,我相信 numpy,mcg16807 也应该是可复制的,因为它是 LCG,但我不确定如何在 python 中复制 swb2712,因为它可能是 matlab 的专有和我找不到源代码。我正在尝试做的事情是可能的,还是我应该求助于使用 matlab 并称它为一天?


米脂
浏览 203回答 1
1回答

30秒到达战场

从这个博客来看,它似乎是基于 George Marsaglia 的 ziggurat 算法的变体(生成正态分布的随机数) https://blogs.mathworks.com/cleve/2015/05/18/the-ziggurat-random-normal -发电机/两个有用的参考...George Marsaglia 和 WW Tsang,“生成随机变量的 ziggurat 方法”。统计软件杂志 5, 1-7, 2000 http://www.jstatsoft.org/v05/i08Jurgen A. Doornik,“生成正常随机样本的改进 Ziggurat 方法”。PDF,牛津大学纳特菲尔德学院,2005 年 http://www.doornik.com/research/ziggurat.pdf该演示文稿还将其详细描述为 swb2712:Modified Subtract-with-Borrow generator,滞后 27 和 12 ... http://profmsaeed.org/wp-content/uploads/2009/08/MATLAB-V.ppt希望这有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python