java如何生成随机数
生成随机数的常用方法
Java 提供了多种生成随机数的方式,以下是几种常见的方法:
使用 Math.random()
Math.random() 返回一个 double 类型的伪随机数,范围在 [0.0, 1.0) 之间。可以通过缩放和转换生成指定范围的整数。
// 生成 [0, 100) 之间的随机整数
int randomNum = (int)(Math.random() * 100);
使用 java.util.Random
Random 类提供了更灵活的随机数生成功能,支持生成 int、long、float、double 等类型的随机数。
Random random = new Random();
// 生成 [0, 100) 之间的随机整数
int randomInt = random.nextInt(100);
// 生成 [1, 101) 之间的随机整数
int rangedInt = random.nextInt(100) + 1;
// 生成随机布尔值
boolean randomBoolean = random.nextBoolean();
使用 ThreadLocalRandom(Java 7+)
ThreadLocalRandom 是 Random 的线程安全版本,适用于多线程环境。
import java.util.concurrent.ThreadLocalRandom;
// 生成 [0, 100) 之间的随机整数
int randomNum = ThreadLocalRandom.current().nextInt(100);
// 生成 [10, 20) 之间的随机整数
int rangedNum = ThreadLocalRandom.current().nextInt(10, 20);
使用 SecureRandom(安全随机数)
SecureRandom 提供了加密强度更高的随机数生成,适用于安全性要求较高的场景。
import java.security.SecureRandom;
SecureRandom secureRandom = new SecureRandom();
// 生成随机整数
int secureInt = secureRandom.nextInt();
// 生成随机字节数组
byte[] bytes = new byte[16];
secureRandom.nextBytes(bytes);
生成指定范围的随机数
以下是一个通用方法,用于生成 [min, max] 范围内的随机整数:
public static int getRandomInRange(int min, int max) {
return ThreadLocalRandom.current().nextInt(min, max + 1);
}
生成随机字符串
结合随机数和字符集生成随机字符串:

public static String generateRandomString(int length) {
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++) {
sb.append(chars.charAt(random.nextInt(chars.length())));
}
return sb.toString();
}
注意事项
Math.random()和Random生成的随机数是伪随机数,不适合用于加密或安全场景。- 在多线程环境中优先使用
ThreadLocalRandom。 - 需要高安全性时使用
SecureRandom。






