zhouqijie

一、常见的随机数生成算法

线性同余生成器:

线性同余生成器(linear congruential generator LOG)可以便捷地生成伪随机数序列,但是生成的伪随机序列质量不高。

梅森旋转算法:

梅森旋转(Mersenne Twister MT)伪随机生成器算法是特别为改进LOG的众多问题而设计的。

MT有庞大的周期:2^19937 - 1(实际上大部分应用需要更长的周期)

MT有非常高的均匀分布维度。(即序列关联性微不足道)

MT通过了多个统计随机性的测试,包括严格的Diehard测试。

MT很快。

推荐一个采用SIMD矢量指令作进一步优化的MT实现:SFMT(SIMD-oriented fast mersenne twister)。下载地址:http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html

所有之母/Xcorshift

所有伪随机数生成器之母(mother of all pseudo-random number generator)是开发Diehard随机性测试组闻名的计算机科学家George Marsaglia于1994年发表的。所有之母和MT相比更易实现而且运算得更快,不重复周期2^250。此算法通过所有Diehard测试并且仍是当今为高速应用设计的最佳伪随机数生成器之一。后来Marsaglia发布了另一个生成器Xorshift,其随机性介于MT个所有之母之间,但运算速度稍快于所有之母。