っ碎片化代码

Java常用类库-Random类

2019-04-09  本文已影响5人  白晓明

Random的实例用于生成伪随机数。其在 java.util 包下,前几节的类都在 java.lang 包下,因此我们在创建 Random 对象时需要在类名上面导入包名( import java.util.Random )。
Random使用线性同余公式修正的48位种子。只有使用相同种子创建、并且执行相同的方法调用序列的两个随机实例,才能生成并返回相同的数字序列。
*** Random* 类** 实现的算法使用一个受保护的使用方法,每次调用可以提供多达32位伪随机生成数。
注: java.util.Random 的实例在密码学上不安全。对于敏感的应用程序,应该考虑使用 SecureRandom 类来获取加密安全的随机数生成器。

1. 构造函数

/*
* Random() 无参构造器
*/
Random random = new Random();
/*
* Random(long seed) 带长整型参数的构造器
*/
long seed = 45687;
Random randomBySeed = new Random(seed);

2. 方法概述

/*
* 使用长整型(long)种子设置此随机数的种子值。
* 其将种子值更新为(种子^0x5DEECE66DL) & ((1L << 48) - 1)
*       并清除nextGaussian()使用的haveNextNextGaussian标志。
*/
Random r = new Random();
r.setSeed(89999);
System.out.println(r.nextInt());
/*
* 生成[0,10]区间的整数。
*     由于next(int bits)是 protected (相对其他类是私有类,相对子类或姐妹类是公共的),因此其他类需要根据数据类型调用相关方法。
*      nextBytes(byte[] bytes)
*      nextInt() & nextInt(int bound)
*      nextLong()
*      nextBoolean()
*      nextFloat()
*      nextDouble()
*/
Random random = new Random();
System.out.println(random.nextInt(10));

3. 与Math类中的random()方法的区别

上一篇 下一篇

猜你喜欢

热点阅读