类 ISAACRandom

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

public class ISAACRandom extends Object implements Serializable
一个快速的密码伪随机数生成器。

ISAAC(Indirection, Shift, Accumulate, Add, and Count)生成32位随机数。ISAAC被设计为具有密码学安全性,并受RC4启发。循环长度至少为240个值,并且平均为28295个值。结果是均匀分布、无偏差且不可预测,除非您知道种子。

此代码基于Bob Jenkins对该算法的原始实现(经过轻微更改和改进)。

另请参阅:
  • 构造器概要

    构造器
    构造器
    说明
    创建一个新的ISAAC随机数生成器。
    ISAACRandom(int[] seed)
    使用int数组种子创建一个新的ISAAC随机数生成器。
    ISAACRandom(long seed)
    使用单个long种子创建一个新的ISAAC随机数生成器。
  • 方法概要

    修饰符和类型
    方法
    说明
    protected void
    清除默认实现中用于RandomGenerator.nextGaussian()的缓存。
    boolean
    从此随机数生成器的序列中返回下一个伪随机、均匀分布的boolean值。
    void
    nextBytes(byte[] bytes)
    生成随机字节并将其放入用户提供的字节数组中。
    void
    nextBytes(byte[] bytes, int start, int len)
    生成随机字节并将其放入用户提供的字节数组中。
    double
    从此随机数生成器的序列中返回下一个伪随机、均匀分布在0.01.0之间的double值。
    float
    从此随机数生成器的序列中返回下一个伪随机、均匀分布在0.01.0之间的float值。
    double
    从此随机数生成器的序列中返回下一个伪随机、高斯(“正态”)分布的double值,均值为0.0,标准差为1.0
    int
    从此随机数生成器的序列中返回下一个伪随机、均匀分布的int值。
    int
    nextInt(int n)
    从此随机数生成器的序列中返回一个伪随机、均匀分布在0(包括)和指定值(不包括)之间的int值。
    long
    从此随机数生成器的序列中返回下一个伪随机、均匀分布的long值。
    long
    nextLong(long n)
    从此随机数生成器的序列中返回一个伪随机、均匀分布在0(包括)和指定值(不包括)之间的int值。
    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
  • 构造器详细资料

    • ISAACRandom

      public ISAACRandom()
      创建一个新的ISAAC随机数生成器。
      该实例使用当前时间和实例的系统哈希码的组合作为种子进行初始化。
    • ISAACRandom

      public ISAACRandom(long seed)
      使用单个long种子创建一个新的ISAAC随机数生成器。
      参数:
      seed - 初始种子。
    • ISAACRandom

      public ISAACRandom(int[] seed)
      使用int数组种子创建一个新的ISAAC随机数生成器。
      参数:
      seed - 初始种子。如果为null,则种子将与当前时间相关联。
  • 方法详细资料

    • setSeed

      public void setSeed(int[] seed)
      使用int数组种子设置基础随机数生成器的种子。

      从相同种子开始生成的值序列应该是相同的。

      指定者:
      setSeed 在接口中 RandomGenerator
      参数:
      seed - 种子值
    • nextInt

      public int nextInt()
      从此随机数生成器的序列中返回下一个伪随机、均匀分布的int值。

      所有232可能的int值应该以(大约)相等的概率产生。

      指定者:
      nextInt 在接口中 RandomGenerator
      返回:
      从此随机数生成器的序列中返回下一个伪随机、均匀分布的int
    • nextBoolean

      public boolean nextBoolean()
      从此随机数生成器的序列中返回下一个伪随机、均匀分布的boolean值。
      返回:
      从此随机数生成器的序列中返回下一个伪随机、均匀分布的boolean
    • nextDouble

      public double nextDouble()
      从此随机数生成器的序列中返回下一个伪随机、均匀分布在0.01.0之间的double值。
      返回:
      从此随机数生成器的序列中返回下一个伪随机、均匀分布在0.01.0之间的double
    • nextFloat

      public float nextFloat()
      从此随机数生成器的序列中返回下一个伪随机、均匀分布在0.01.0之间的float值。
      返回:
      从此随机数生成器的序列中返回下一个伪随机、均匀分布在0.01.0之间的float
    • 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(int seed)
      使用int种子设置基础随机数生成器的种子。

      从相同种子开始生成的值序列应该是相同的。

      指定者:
      setSeed 在接口中 RandomGenerator
      参数:
      seed - 种子值
    • setSeed

      public void setSeed(long seed)
      使用long种子设置基础随机数生成器的种子。

      从相同种子开始生成的值序列应该是相同的。

      指定者:
      setSeed 在接口中 RandomGenerator
      参数:
      seed - 种子值
    • nextInt

      public int nextInt(int n) throws IllegalArgumentException
      从此随机数生成器的序列中返回一个伪随机、均匀分布在0(包括)和指定值(不包括)之间的int值。
      指定者:
      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