您可以在python中复制matlab的旧伪随机数生成器吗?

问题描述 投票:3回答:2

我正在尝试在python中分析随机数的随机流。具体来说,我正在研究来自matlab的以下伪随机流:mt19937ar(梅森·扭曲者),mcg16807(LCG)和swb2712(带有借位生成器的修改后的减法)。这是Matlab PRNG的reference page

[我知道Mersenne Twister是python中用于随机性的默认生成器,我相信numpy,由于它是LCG,因此mcg16807也应该是可复制的,但是我不确定如何在python中复制swb2712,因为它可能是专有的Matlab的,我找不到源代码。我正在尝试做些什么吗?还是我应该只使用Matlab并称之为一天?

python matlab random statistics probability
2个回答
1
投票

从此博客看来,它似乎基于乔治·玛格萨利亚(George Marsaglia)的ziggurat算法的变体(生成正态分布的随机数)https://blogs.mathworks.com/cleve/2015/05/18/the-ziggurat-random-normal-generator/

两个有用的参考...

[George Marsaglia和W. W. Tsang,“生成随机变量的之字形方法。”统计软件杂志5,1-7,2000http://www.jstatsoft.org/v05/i08

Jurgen A. Doornik,“一种生成标准随机样本的改进的Ziggurat方法。” PDF,纽菲尔德学院,牛津,2005年http://www.doornik.com/research/ziggurat.pdf

此演示文稿也将其详细描述为swb2712:带借项的修改的借位减法生成器,具有滞后27和12 ... http://profmsaeed.org/wp-content/uploads/2009/08/MATLAB-V.ppt

希望此帮助!


0
投票

Cris Luengo ...我在以前的答案中添加了ppt链接,最后,帮助别人进行stackoverflow有时不值得我们花费时间,因为人们太懒了,只想先谷歌搜索... d_kennetz,如果您这样做会读我的第一个答案!

© www.soinside.com 2019 - 2024. All rights reserved.