随机数生成器,梅森素数捻线机

系列的这是第一个关于MATLAB的随机数生成器。

内容

控制

如果你在任何时候发出以下命令在任何MATLAB的最新版本,你总会得到这个阴谋。

rng默认的1)嘘(randn(10000年,100年)

rng命令控件使用的随机数发生器兰德,randn,兰迪功能。当被称为默认的参数,rng重置条件的发电机,当一个新鲜的MATLAB是开始。看到这情况,就叫rng本身。

rng
ans =类型:“龙卷风”种子:0状态:x1 uint32 [625]

我们看到,默认生成器“旋风”种子,默认是0,国家是一个长度为625向量32位无符号整数。

如果你要求帮助提高,你会得到大量的信息,其中包括有三个现代发电机的事实。

发电机描述- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -“龙卷风”梅森素数的旋风的combRecursive结合多个递归multFibonacci乘法滞后斐波那契

今天的帖子里的其余部分“旋风”。我在未来将覆盖其他的帖子。

梅森素数捻线机

梅森素数捻线机,到目前为止,今天最受欢迎的伪随机数发生器。它被每一个广泛分布的数学软件包。它已经作为一个选项在MATLAB和发明以来已经默认了近十年。

梅森素数捻线机是由Takuji西村教授Makoto松本和广岛大学近二十年前。这是他们的主页。C源代码可以在这里

梅森素数

梅森素数是质数的形式2 ^ p - 1在哪里p本身是质数。它们的名字命名一个法国修道士在17世纪早期研究它们。我们学习从维基百科,最大的质数的梅森素数p等于57885161。梅森素数捻线机的p等于19937。这是小至于梅森素数,但巨大的随机数生成器是而言。

为什么名字?

松本解释了“梅森素数捻线机”这个名字起源于梅森素数捻线机主页。

太首先被任命为“原始扭曲广义反馈移位寄存器序列”的历史原因。Makoto: Knuth教授在他的信中说:“名字是一口。”Takuji: ....。。。。几天后Makoto:嗨,Takkun,如何“梅森素数的旋风?”Since it uses Mersenne primes, and it shows that it has its ancestor Twisted GFSR. Takuji: Well. Makoto: It sounds like a jet coaster, so it sounds quite fast, easy to remember and easy to pronounce. Moreover, although it is a secret, it hides in its name the initials of the inventors. Takuji: ....... Makoto: Come on, let's go with MT! Takuji: ....well, affirmative. Later, we got a letter from Prof. Knuth saying "it sounds a nice name." :-)

算法

梅森素数的整数部分捻线机算法不涉及任何算术加法,减法,乘法和除法。所有的操作都是变化的,或者是,xor的。

所有元素的状态,除了最后一个,是无符号32位随机整数,形成一个缓存仔细启动时生成的。这一代是引发的种子单个整数,启动整个过程。

最后一个元素的指针到缓存。每个请求一个随机整数会导致退出了缓存和一个元素的指针递增。元素是“回火”改善随机性与额外的逻辑操作。当指针的缓存,缓存是加623的元素。

该算法分析了调查小组的理论属性排列和回火操作。参数已被选定,梅森素数的周期是2 ^ 19937 - 1。这一时期是更长的时间比其他任何随机数字生成器提议之前或之后,是太受欢迎的原因之一。

通过设计,产生的结果满足均匀分布的财产在623 -维立方体。

双打

这是梅森素数捻线机的功能源代码将一对随机uint32s转化为一个随机的两倍。你可以看到它需要一个int的27位和最高的26位,粘在一起,并通过MATLAB称之为繁殖eps / 2。这是唯一的地方在浮点运算的代码。

双genrand_res53(空白){无符号长= genrand_int32 () > > 5, b = genrand_int32 () > > 6;返回(* 67108864.0 + b) * (1.0/9007199254740992.0);}

极不可能的结果将是零事件一个b为零。如果发生这种情况,MATLAB接口拒绝结果并再次调用这个函数。所以最小的双重结果一个= 0b等于1。当两个最大的双重结果一个b都是1。因此,的输出兰德在闭区间

2 $ $ ^ {-53}\ leq x \ leq 1 - 2 ^ {-53} $ $

种子、流和状态

更多关于随机数种子,溪流和状态,看到彼得•帕金斯客座博客罗兰的博客。当然,明白了的文档

谢谢

感谢彼得·珀金斯,他所做的工作对我们的随机数套件多年来,和启发我。

引用

m .松本和t .西村。“梅森素数捻线机:623 -维Equidistributed制服伪随机数发生器”。ACM Transactions on Modeling and Computer Simulation, 8(1):3-30. 1998. Available online at:< http://www.math.sci.hiroshima-u.ac.jp/ m-mat每公吨/文章/ mt.pdf>。




发表与MATLAB®R2014b

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。