类 MersenneTwister
- 所有已实现的接口:
-
Serializable
,RandomGenerator
注意: 建议使用WELL生成器之一,而不是MersenneTwister生成器(有关更多信息,请参阅此论文)。
此生成器具有极长的周期(219937-1)和623维均匀分布,精度高达32位。该生成器的主页位于http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html。
该生成器在1998年由Makoto Matsumoto和Takuji Nishimura在一篇论文中描述: Mersenne Twister: A 623-Dimensionally Equidistributed Uniform Pseudo-Random Number Generator,ACM Transactions on Modeling and Computer Simulation,Vol. 8, No. 1, January 1998, pp 3--30。
该类主要是Makoto Matsumoto和Takuji Nishimura于2002年1月26日用C语言编写的生成器的Java移植。以下是他们的原始版权:
版权所有(C)1997 - 2002年,Makoto Matsumoto和Takuji Nishimura,保留所有权利。
允许在源代码和二进制形式中重新分发和使用,无论是否进行修改,只要满足以下条件:
- 源代码的再分发必须保留上述版权声明、此条件列表和以下免责声明。
- 以二进制形式再分发必须在文档和/或其他提供的材料中重现上述版权声明、此条件列表和以下免责声明。
- 未经事先书面许可,不得使用其贡献者的名称来认可或推广从此软件衍生的产品。
本软件由版权所有者和贡献者“按原样”提供,不提供任何明示或暗示的担保,包括但不限于对适销性和特定用途的暗示担保。在任何情况下,无论是在合同、严格责任还是侵权行为(包括疏忽或其他方式)的任何理论下,版权所有者或贡献者均不对任何直接、间接、附带、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)负责,即使已被告知此类损害的可能性。
- 另请参阅:
-
构造器概要
构造器说明创建一个新的随机数生成器。MersenneTwister
(int seed) 使用单个int种子创建一个新的随机数生成器。MersenneTwister
(int[] seed) 使用int数组种子创建一个新的随机数生成器。MersenneTwister
(long seed) 使用单个long种子创建一个新的随机数生成器。 -
方法概要
修饰符和类型方法说明protected void
清除默认实现中使用的缓存RandomGenerator.nextGaussian()
。boolean
从此随机数生成器的序列中返回下一个伪随机、均匀分布的boolean
值。void
nextBytes
(byte[] bytes) 生成随机字节并将其放入用户提供的字节数组中。void
nextBytes
(byte[] bytes, int start, int len) 生成随机字节并将其放入用户提供的字节数组中。double
从此随机数生成器的序列中返回下一个伪随机、均匀分布的double
值,范围在0.0
和1.0
之间。float
从此随机数生成器的序列中返回下一个伪随机、均匀分布的float
值,范围在0.0
和1.0
之间。double
从此随机数生成器的序列中返回下一个伪随机、高斯(“正态”)分布的double
值,均值为0.0
,标准差为1.0
。int
nextInt()
从此随机数生成器的序列中返回下一个伪随机、均匀分布的int
值。int
nextInt
(int n) 从此随机数生成器的序列中返回一个伪随机、均匀分布的int
值,范围在0(包括)和指定值(不包括)之间。long
nextLong()
从此随机数生成器的序列中返回下一个伪随机、均匀分布的long
值。long
nextLong
(long n) 从此随机数生成器的序列中返回一个伪随机、均匀分布的int
值,范围在0(包括)和指定值(不包括)之间。void
setSeed
(int seed) 使用给定的int种子重新初始化生成器,就像刚刚使用相同种子构建了一个新生成器一样。void
setSeed
(int[] seed) 使用给定的int数组种子重新初始化生成器,就像刚刚使用相同种子构建了一个新生成器一样。void
setSeed
(long seed) 使用long
种子设置底层随机数生成器的种子。toString()
-
构造器详细资料
-
MersenneTwister
public MersenneTwister()创建一个新的随机数生成器。该实例使用当前时间加上此实例的系统标识哈希码作为种子进行初始化。
-
MersenneTwister
public MersenneTwister(int seed) 使用单个int种子创建一个新的随机数生成器。- 参数:
-
seed
- 初始种子(32位整数)
-
MersenneTwister
public MersenneTwister(int[] seed) 使用int数组种子创建一个新的随机数生成器。- 参数:
-
seed
- 初始种子(32位整数数组),如果为null,则生成器的种子将与当前时间相关联
-
MersenneTwister
public MersenneTwister(long seed) 使用单个long种子创建一个新的随机数生成器。- 参数:
-
seed
- 初始种子(64位整数)
-
-
方法详细资料
-
setSeed
public void setSeed(int seed) 使用给定的int种子重新初始化生成器。生成器的状态与使用相同种子构建的新生成器完全相同。
- 指定者:
-
setSeed
在接口中RandomGenerator
- 参数:
-
seed
- 初始种子(32位整数)
-
setSeed
public void setSeed(int[] seed) 使用给定的int数组种子重新初始化生成器。生成器的状态与使用相同种子构建的新生成器完全相同。
- 指定者:
-
setSeed
在接口中RandomGenerator
- 参数:
-
seed
- 初始种子(32位整数数组),如果为null,则生成器的种子将是当前系统时间加上此实例的系统标识哈希码
-
nextInt
public int nextInt()从此随机数生成器的序列中返回下一个伪随机、均匀分布的int
值。所有232个可能的
int
值应以(大约)相等的概率产生。- 指定者:
-
nextInt
在接口中RandomGenerator
- 返回:
-
从此随机数生成器的序列中返回下一个伪随机、均匀分布的
int
值
-
nextBoolean
public boolean nextBoolean()从此随机数生成器的序列中返回下一个伪随机、均匀分布的boolean
值。- 返回:
-
从此随机数生成器的序列中返回下一个伪随机、均匀分布的
boolean
值
-
nextDouble
public double nextDouble()从此随机数生成器的序列中返回下一个伪随机、均匀分布的double
值,范围在0.0
和1.0
之间。- 返回:
-
从此随机数生成器的序列中返回下一个伪随机、均匀分布的
double
值,范围在0.0
和1.0
之间
-
nextFloat
public float nextFloat()- 返回:
-
从此随机数生成器的序列中返回下一个伪随机、均匀分布的
float
值,该值介于0.0
和1.0
之间
-
nextLong
public long nextLong()返回此随机数生成器序列中的下一个伪随机、均匀分布的long
值。应该以(大约)相等的概率产生所有264个可能的long
值。- 返回:
-
从此随机数生成器的序列中返回下一个伪随机、均匀分布的
long
值
-
nextBytes
public void nextBytes(byte[] bytes) 生成随机字节并将其放入用户提供的字节数组中。生成的随机字节数量等于字节数组的长度。- 参数:
-
bytes
- 非空字节数组,用于存放随机字节
-
nextBytes
public void nextBytes(byte[] bytes, int start, int len) 生成随机字节并将其放入用户提供的字节数组中。- 参数:
-
bytes
- 非空字节数组,用于存放随机字节 -
start
- 插入生成字节到数组中的起始索引 -
len
- 要生成的字节数量
-
setSeed
public void setSeed(long seed) 使用long
种子设置基础随机数生成器的种子。从相同种子开始生成的值序列应该是相同的。
- 指定者:
-
setSeed
在接口中RandomGenerator
- 参数:
-
seed
- 种子值
-
nextInt
返回一个伪随机、均匀分布的int
值,介于0(包括)和指定值(不包括)之间,从此随机数生成器的序列中绘制。- 指定者:
-
nextInt
在接口中RandomGenerator
- 参数:
-
n
- 要返回的随机数的上限。必须是正数。 - 返回:
-
一个伪随机、均匀分布的
int
值,介于0(包括)和n(不包括)之间。 - 抛出:
-
IllegalArgumentException
- 如果n不是正数。
-
nextLong
public long nextLong(long n) 返回一个伪随机、均匀分布的int
值,介于0(包括)和指定值(不包括)之间,从此随机数生成器的序列中绘制。- 指定者:
-
nextLong
在接口中RandomGenerator
- 参数:
-
n
- 要返回的随机数的上限。必须是正数。 - 返回:
-
一个伪随机、均匀分布的
int
值,介于0(包括)和n(不包括)之间。
-
nextGaussian
public double nextGaussian()从此随机数生成器的序列中返回下一个伪随机、高斯(“正态”)分布的double
值,均值为0.0
,标准差为1.0
。- 指定者:
-
nextGaussian
在接口中RandomGenerator
- 返回:
-
从此随机数生成器的序列中返回下一个伪随机、高斯(“正态”)分布的
double
值,均值为0.0
,标准差为1.0
。
-
clearCache
protected void clearCache()清除默认实现的RandomGenerator.nextGaussian()
使用的缓存。 -
toString
-