java如何产生随机数
使用 Math.random() 方法
Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。
double randomValue = Math.random(); // 默认范围 [0.0, 1.0)
int randomInt = (int)(Math.random() * 100); // 生成 [0, 99] 的整数
使用 Random 类
java.util.Random 类提供了更灵活的随机数生成方式,支持整数、浮点数、布尔值等。

Random random = new Random();
int randomInt = random.nextInt(100); // 生成 [0, 99] 的整数
double randomDouble = random.nextDouble(); // 生成 [0.0, 1.0) 的浮点数
boolean randomBoolean = random.nextBoolean(); // 随机布尔值
使用 ThreadLocalRandom 类(多线程场景)
java.util.concurrent.ThreadLocalRandom 是线程安全的随机数生成器,适用于高并发环境。

int randomInt = ThreadLocalRandom.current().nextInt(1, 101); // 生成 [1, 100] 的整数
double randomDouble = ThreadLocalRandom.current().nextDouble(10.0); // 生成 [0.0, 10.0) 的浮点数
使用 SecureRandom 类(安全敏感场景)
java.security.SecureRandom 提供加密强度的随机数生成,适合密码学相关需求。
SecureRandom secureRandom = new SecureRandom();
byte[] randomBytes = new byte[16];
secureRandom.nextBytes(randomBytes); // 生成随机字节数组
int secureInt = secureRandom.nextInt(); // 生成随机整数
生成指定范围的随机数
通过调整参数可以控制随机数的范围:
- 整数范围:
nextInt(max - min + 1) + minint min = 10, max = 20; int rangeInt = new Random().nextInt(max - min + 1) + min; // [10, 20] - 浮点数范围:
nextDouble() * (max - min) + mindouble min = 5.0, max = 10.0; double rangeDouble = ThreadLocalRandom.current().nextDouble(min, max); // [5.0, 10.0)
注意事项
- 种子设置:
Random和SecureRandom支持种子初始化,相同种子会生成相同的随机序列。 - 性能:
ThreadLocalRandom在并发场景下性能优于Random。 - 安全性:常规场景用
Random,安全敏感场景必须用SecureRandom。






