本文目录导读:

在Java中生成随机数有多种方法,以下是几种常用方式:
使用 Math.random() 方法
// 生成 [0.0, 1.0) 之间的随机double double randomValue = Math.random(); // 生成 [0, 100) 之间的随机整数 int randomInt = (int)(Math.random() * 100); // 0-99 // 生成 [min, max] 之间的随机整数 int min = 10, max = 50; int randomInRange = (int)(Math.random() * (max - min + 1)) + min; // 10-50
使用 Random 类
import java.util.Random; Random random = new Random(); // 生成各种类型的随机数 int intRandom = random.nextInt(); // 任何整数 int intBound = random.nextInt(100); // 0-99 long longRandom = random.nextLong(); // 任何长整数 float floatRandom = random.nextFloat(); // [0.0, 1.0) double doubleRandom = random.nextDouble(); // [0.0, 1.0) boolean booleanRandom = random.nextBoolean(); // true/false // 生成指定范围 [min, max] 的随机数 int min = 10, max = 50; int rangeRandom = random.nextInt(max - min + 1) + min;
使用 ThreadLocalRandom (推荐用于多线程)
import java.util.concurrent.ThreadLocalRandom;
// 生成随机数
int intRandom = ThreadLocalRandom.current().nextInt(100); // 0-99
int intRange = ThreadLocalRandom.current().nextInt(10, 50); // 10-49
double doubleRange = ThreadLocalRandom.current().nextDouble(0.5, 10.5);
// 适用于多线程环境,性能更好
public class RandomDemo {
public static void main(String[] args) {
ThreadLocalRandom random = ThreadLocalRandom.current();
for (int i = 0; i < 10; i++) {
System.out.println(random.nextInt(1, 100)); // 1-99
}
}
}
使用 SecureRandom (加密安全)
import java.security.SecureRandom; SecureRandom secureRandom = new SecureRandom(); // 生成加密安全的随机数 byte[] bytes = new byte[16]; secureRandom.nextBytes(bytes); int secureInt = secureRandom.nextInt(100); int secureRange = secureRandom.nextInt(10, 100);
完整示例:生成验证码
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
// 生成6位数字验证码
Random random = new Random();
StringBuilder code = new StringBuilder();
for (int i = 0; i < 6; i++) {
code.append(random.nextInt(10));
}
System.out.println("数字验证码: " + code);
// 生成包含字母和数字的验证码
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
StringBuilder mixedCode = new StringBuilder();
for (int i = 0; i < 6; i++) {
mixedCode.append(chars.charAt(random.nextInt(chars.length())));
}
System.out.println("混合验证码: " + mixedCode);
}
}
选择建议
| 方法 | 适用场景 | 特点 |
|---|---|---|
| Math.random() | 简单快速 | 只能生成double |
| Random | 常规用途 | 功能全面,线程安全 |
| ThreadLocalRandom | 多线程环境 | 性能最好 |
| SecureRandom | 安全场景 | 加密级别,速度较慢 |
推荐:大多数情况下使用 Random 类即可,在多线程环境下使用 ThreadLocalRandom。