一、Random类概述
- 该类用来生成随机数字。此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式 (linear congruential form) 对其进行了修改(请参阅 Donald Knuth 的The Art of Computer Programming, Volume 3,第 3.2.1 节)。
- 如果用相同的种子创建两个
Random
实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证此属性的实现,为类Random
指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类Random
使用此处所示的所有算法。但是允许Random
类的子类使用其他算法,只要其符合所有方法的常规协定即可。 Random
类实现的算法使用一个protected
实用工具方法,每次调用它最多可提供 32 个伪随机生成的位。- 基本使用:
import java.util.Random;
public class RandomTest(){
public static void main(String[] args){
Random r = new Random();
// nextInt方法不传参数,是从int范围内随机生成数字
int num = r.nextInt();
System.out.println("生成的随机数是:"+num);
// nextInt还可以传入参数。
// next(3)指生成随机数的范围为[0,2)
int num2 = r.nextInt(10);
// 生成[1,10]之间的随机数字
int num3 = r.nextInt(10) + 1;
}
}
二、常用方法
(一)构造方法
Random() 创建一个新的随机数生成器。 |
Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。 |
(二)常用方法
protected int | next(int bits) 生成下一个伪随机数。 |
boolean | nextBoolean() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 |
void | nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的 byte 数组中。 |
double | nextDouble() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 |
float | nextFloat() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 |
double | nextGaussian() 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0 ,标准差是 1.0 。 |
int | nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 |
int | nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。 |
long | nextLong() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 |
void | setSeed(long seed) 使用单个 long 种子设置此随机数生成器的种子。 |