java如何产生随机数
使用 Math.random() 方法
Math.random() 返回一个 double 类型的伪随机数,范围在 [0.0, 1.0) 之间。可以通过数学运算调整范围:

// 生成 [0, 100) 之间的随机整数
int randomNum = (int) (Math.random() * 100);
// 生成 [min, max] 范围内的随机整数
int min = 10, max = 20;
int rangeRandom = min + (int) (Math.random() * (max - min + 1));
使用 Random 类
java.util.Random 类提供了更灵活的随机数生成功能,支持整数、浮点数、布尔值等:

Random random = new Random();
// 生成 [0, n) 的随机整数
int num1 = random.nextInt(100);
// 生成任意范围的整数(含负数)
int num2 = random.nextInt(max - min + 1) + min;
// 生成随机布尔值
boolean bool = random.nextBoolean();
// 生成随机浮点数 [0.0, 1.0)
double floatNum = random.nextDouble();
使用 ThreadLocalRandom 类(多线程场景)
java.util.concurrent.ThreadLocalRandom 适用于高并发环境,性能优于 Random:
// 生成 [0, 100) 的随机整数
int num = ThreadLocalRandom.current().nextInt(100);
// 生成 [min, max] 的随机整数
int rangedNum = ThreadLocalRandom.current().nextInt(min, max + 1);
使用 SecureRandom 类(安全场景)
java.security.SecureRandom 提供加密强度更高的随机数,适用于密码学相关操作:
SecureRandom secureRandom = new SecureRandom();
// 生成随机字节数组
byte[] bytes = new byte[16];
secureRandom.nextBytes(bytes);
// 生成随机整数
int secureNum = secureRandom.nextInt();
注意事项
Math.random()和Random类生成的随机数是伪随机数,依赖于种子(默认使用系统时间)。- 需要可预测性时(如测试),可以指定固定种子:
Random random = new Random(123L); - 线程安全场景优先选择
ThreadLocalRandom,避免Random的同步开销。 - 安全性要求高的场景(如令牌生成)必须使用
SecureRandom。






