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

时间:2019-02-15 02:11:12

标签: python matlab random statistics probability

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

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

1 个答案:

答案 0 :(得分:1)

在此博客中,它似乎基于George Marsaglia的ziggurat算法的变体(生成正态分布的随机数) https://blogs.mathworks.com/cleve/2015/05/18/the-ziggurat-random-normal-generator/

两个有用的参考...

George Marsaglia和W. W. Tsang,“生成随机变量的Ziggurat方法”。统计软件杂志5,1-7,2000 http://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

希望获得帮助!