java中random类是生成伪随机数的常用方式,位于java.util包,支持int、long、double等类型;推荐复用实例,无参构造以系统时间为种子,带long参数可复现序列;nextint(bound)生成[0,bound),整数范围[min,max]用nextint(max-min+1)+min,浮点数用min+(max-min)*nextdouble();非线程安全,多线程应使用threadlocalrandom。

Java 中通过 Random 类生成随机数是最常用、最灵活的方式之一。它位于 java.util 包中,支持生成各种基本类型(如 int、long、double、boolean)的伪随机数。
创建 Random 实例
需要先创建一个 Random 对象,通常推荐复用同一个实例,避免频繁创建带来不必要的开销:
- 无参构造:使用系统当前时间作为种子,适合大多数场景
- 带 long 参数构造:可传入自定义种子,用于需要可重现随机序列的测试或调试
示例:
Random rand = new Random(); // 推荐日常使用<br>Random randFixed = new Random(123L); // 每次运行结果相同
生成常见类型的随机数
Random 提供了多个便捷方法,无需手动缩放或转换:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
nextInt():返回任意 int 值(范围是[-2³¹, 2³¹-1]) -
nextInt(int bound):返回[0, bound)区间内的随机 int(bound 必须为正) -
nextLong():返回任意 long 值 -
nextDouble():返回[0.0, 1.0)的 double -
nextBoolean():返回 true 或 false,概率各 50% -
nextFloat():类似 nextDouble,但返回 float 类型
常用技巧举例(生成 [1, 10] 的随机整数):
int num = rand.nextInt(10) + 1; // nextInt(10) → [0,9],+1 → [1,10]
生成指定范围的随机数(含边界处理)
注意:nextInt(bound) 是左闭右开区间,所以生成 [min, max] 整数需按公式计算:
- 整数:
rand.nextInt(max - min + 1) + min - 浮点数(如 double):
min + (max - min) * rand.nextDouble()
例如生成 [5, 15] 的 double:
double d = 5.0 + (15.0 - 5.0) * rand.nextDouble(); // [5.0, 15.0)
线程安全考虑
Random 实例不是线程安全的。多线程环境下若共享同一实例,应加锁或改用 ThreadLocalRandom(JDK 7+),后者更高效且专为并发设计:
// 推荐多线程场景<br>int n = ThreadLocalRandom.current().nextInt(1, 101); // [1, 101)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










