构造方法
Java的java.util包中有一个Random类,它可以在指定的取值范围内随机产生数字。Random类中提供了两个构造方法如下表。
方法声明 |
功能描述 |
Random() |
构造方法,用于创建一个伪随机数生成器 |
Random(long seed) |
构造方法,使用一个long型的seed种子创建伪随机数生成器 |
示例:
import java.util.Random;
public class myclass {
public static void main(String args[]) {
Random r = new Random(); // 不传入种子
// 随机产生10个[0,100)之间的整数
for (int x = 0; x < 10; x++) {
System.out.println(r.nextInt(100));
}
}
}
当我们运行这个程序两次时,两次产生的随机数序列是不一样的。这是因为当创建Random的实例对象时,没有指定种子,系统会以当前时间戳作为种子,产生随机数。当指定种子后,两次产生的随机数序列就会一样了。
常用的方法
相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数。Random类常用的方法如下表。
下面是一些Random类常用的方法:
方法声明 |
功能描述 |
double nextDouble() |
随机生成double类型的随机数, 返回的是0.0和1.0之间double类型的值。 |
float nextFloat() |
随机生成float类型的随机数, 返回的是0.0和1.0之间float类型的值。 |
int nextInt() |
随机生成int类型的随机数 |
int nextInt(int n) |
随机生成0~n之间int类型的随机数, 返回的是0(包括)和指定值n(不包括)之间的值。 |
- 生成随机整数:
Random random = new Random(); int randomNumber = random.nextInt(); // 生成int范围内的随机整数 int randomNumberInRange = random.nextInt(100); // 生成0到99之间的随机整数
- 生成随机浮点数:
Random random = new Random(); double randomDouble = random.nextDouble(); // 生成0.0到1.0之间的随机浮点数
- 生成随机布尔值:
Random random = new Random(); boolean randomBoolean = random.nextBoolean(); // 随机生成一个布尔值,true或false
- 生成随机字节:
Random random = new Random(); byte[] buffer = new byte[10]; random.nextBytes(buffer); // 将随机字节填充到指定的字节数组中
注意:
Random类生成的是伪随机数,即看似随机但实际上是通过确定性算法计算得到的。如果需要更高质量的随机数,请考虑使用java.security.SecureRandom类。