梅森旋转算法(Mersenne twister) 是一个伪随机数发生算法。由。Makoto Matsumoto(松本真) 和Takuji Nishimura(西村拓士)在1997年开发的,基于有限二进制字段上的矩阵线性递归field F_{2}。 可以快速产生高质量的伪随机数, 修正了古典随机数发生算法的很多缺陷。
梅森旋转算法这个名字来自周期长度取自梅森素数的这样一个事实。这个算法通常使用两个相近的变体,不同之处在于使用了不同的梅森素数。一个更新的和更常用的是MT19937, 32位字长。 还有一个变种是64位版的MT19937-64。 对于一个k位的长度,Mersenne Twister会在[0,2^k-1]的区间之间生成离散型均匀分布的随机数。
Java实现有2个版本,
一个是快速版本,非线程安全。http://www.cs.gmu.edu/~sean/research/mersenne/MersenneTwisterFast.java,java.util.Random比它慢1/3。
一个是普通版本http://www.cs.gmu.edu/~sean/research/mersenne/MersenneTwister.java,线程安全,但比java.util.Random慢1/3。
梅森旋转算法这个名字来自周期长度取自梅森素数的这样一个事实。这个算法通常使用两个相近的变体,不同之处在于使用了不同的梅森素数。一个更新的和更常用的是MT19937, 32位字长。 还有一个变种是64位版的MT19937-64。 对于一个k位的长度,Mersenne Twister会在[0,2^k-1]的区间之间生成离散型均匀分布的随机数。
Java实现有2个版本,
一个是快速版本,非线程安全。http://www.cs.gmu.edu/~sean/research/mersenne/MersenneTwisterFast.java,java.util.Random比它慢1/3。
一个是普通版本http://www.cs.gmu.edu/~sean/research/mersenne/MersenneTwister.java,线程安全,但比java.util.Random慢1/3。