类 ISAACRandom
java.lang.Object
org.hipparchus.random.ISAACRandom
- 所有已实现的接口:
-
Serializable
,RandomGenerator
一个快速的密码伪随机数生成器。
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.0
和1.0
之间的double
值。float
从此随机数生成器的序列中返回下一个伪随机、均匀分布在0.0
和1.0
之间的float
值。double
从此随机数生成器的序列中返回下一个伪随机、高斯(“正态”)分布的double
值,均值为0.0
,标准差为1.0
。int
nextInt()
从此随机数生成器的序列中返回下一个伪随机、均匀分布的int
值。int
nextInt
(int n) 从此随机数生成器的序列中返回一个伪随机、均匀分布在0(包括)和指定值(不包括)之间的int
值。long
nextLong()
从此随机数生成器的序列中返回下一个伪随机、均匀分布的long
值。long
nextLong
(long n) 从此随机数生成器的序列中返回一个伪随机、均匀分布在0(包括)和指定值(不包括)之间的int
值。void
setSeed
(int seed) 使用int
种子设置基础随机数生成器的种子。void
setSeed
(int[] seed) 使用int数组种子设置基础随机数生成器的种子。void
setSeed
(long seed) 使用long
种子设置基础随机数生成器的种子。toString()
-
构造器详细资料
-
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.0
和1.0
之间的double
值。- 返回:
-
从此随机数生成器的序列中返回下一个伪随机、均匀分布在
0.0
和1.0
之间的double
值
-
nextFloat
public float nextFloat()从此随机数生成器的序列中返回下一个伪随机、均匀分布在0.0
和1.0
之间的float
值。- 返回:
-
从此随机数生成器的序列中返回下一个伪随机、均匀分布在
0.0
和1.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
从此随机数生成器的序列中返回一个伪随机、均匀分布在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
-