类 MersenneTwister

java.lang.Object
org.hipparchus.random.MersenneTwister
所有已实现的接口:
Serializable, RandomGenerator

public class MersenneTwister extends Object implements Serializable
This class implements a powerful pseudo-random number generator developed by Makoto Matsumoto and Takuji Nishimura during 1996-1997.

注意: 建议使用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,保留所有权利。

允许在源代码和二进制形式中重新分发和使用,无论是否进行修改,只要满足以下条件:

  1. 源代码的再分发必须保留上述版权声明、此条件列表和以下免责声明。
  2. 以二进制形式再分发必须在文档和/或其他提供的材料中重现上述版权声明、此条件列表和以下免责声明。
  3. 未经事先书面许可,不得使用其贡献者的名称来认可或推广从此软件衍生的产品。

本软件由版权所有者和贡献者“按原样”提供,不提供任何明示或暗示的担保,包括但不限于对适销性和特定用途的暗示担保。在任何情况下,无论是在合同、严格责任还是侵权行为(包括疏忽或其他方式)的任何理论下,版权所有者或贡献者均不对任何直接、间接、附带、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)负责,即使已被告知此类损害的可能性。

另请参阅:
  • 构造器概要

    构造器
    构造器
    说明
    创建一个新的随机数生成器。
    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.01.0之间。
    float
    从此随机数生成器的序列中返回下一个伪随机、均匀分布的float值,范围在0.01.0之间。
    double
    从此随机数生成器的序列中返回下一个伪随机、高斯(“正态”)分布的double值,均值为0.0,标准差为1.0
    int
    从此随机数生成器的序列中返回下一个伪随机、均匀分布的int值。
    int
    nextInt(int n)
    从此随机数生成器的序列中返回一个伪随机、均匀分布的int值,范围在0(包括)和指定值(不包括)之间。
    long
    从此随机数生成器的序列中返回下一个伪随机、均匀分布的long值。
    long
    nextLong(long n)
    从此随机数生成器的序列中返回一个伪随机、均匀分布的int值,范围在0(包括)和指定值(不包括)之间。
    void
    setSeed(int seed)
    使用给定的int种子重新初始化生成器,就像刚刚使用相同种子构建了一个新生成器一样。
    void
    setSeed(int[] seed)
    使用给定的int数组种子重新初始化生成器,就像刚刚使用相同种子构建了一个新生成器一样。
    void
    setSeed(long seed)
    使用long种子设置底层随机数生成器的种子。

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • 构造器详细资料

    • 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.01.0之间。
      返回:
      从此随机数生成器的序列中返回下一个伪随机、均匀分布的double值,范围在0.01.0之间
    • nextFloat

      public float nextFloat()
      返回:
      从此随机数生成器的序列中返回下一个伪随机、均匀分布的float值,该值介于0.01.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

      public int nextInt(int n) throws IllegalArgumentException
      返回一个伪随机、均匀分布的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

      public String toString()
      覆盖:
      toString 在类中 Object