Java Random类生成随机数(附带实例)
Java 程序中,利用 Math 类中的 random() 方法可以生成随机数,但该方法只能生成 0.0~1.0 的随机实数,要想生成其他类型和区间的随机数,必须对得到的结果进行进一步的加工和处理。而 java.util 包中的 Random 类可以生成任何类型的随机数。
Random 类中实现的随机算法是伪随机,也就是有规则的随机。随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数。
Random 类包含两个构造方法:
1) public Random() 构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造 Random 对象,示例如下:
2) public Random(long seed) 构造方法可以通过制定一个种子数进行创建,示例如下:
Random 类的常用方法如下表所示:
相同种子数的 Random 对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的 Random 对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这一点在生成多个随机数字时需要特别注意。
【实例】利用种子数相同的 Random 对象生成相同的随机数。
Random 类中实现的随机算法是伪随机,也就是有规则的随机。随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数。
Random 类包含两个构造方法:
1) public Random() 构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造 Random 对象,示例如下:
Random r = new Random();
2) public Random(long seed) 构造方法可以通过制定一个种子数进行创建,示例如下:
Random r1 = new Random(10);
Random 类的常用方法如下表所示:
方法 | 功能描述 |
---|---|
public boolean nextBoolean() | 生成一个随机的 boolean 值,生成 true 和 false 的值概率相等 |
public double nextDouble() | 生成一个随机的 double 值,数值介于 [0,1.0) |
public int nextInt() | 生成一个介于(-2^31)~(2^31-1)的int值 |
public int nextInt(int n) | 生成一个位于 [0,n) 的区间 int 值,包含 0 而不包含 n |
public void setSeed(long seed) | 重新设置 Random 对象中的种子数 |
相同种子数的 Random 对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的 Random 对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这一点在生成多个随机数字时需要特别注意。
【实例】利用种子数相同的 Random 对象生成相同的随机数。
import java.util.*; public class RandomDemo { public static void main(String[] args) { Random r1 = new Random(10); Random r2 = new Random(10); for(int i = 0; i < 3; i++) { System.out.println(r1.nextInt()); System.out.println(r2.nextInt()); } } }程序执行结果为:
-1157793070
-1157793070
1913984760
1913984760
1107254586
1107254586