Java 生成随机数实战:Random 与 Math.random 详解
本简明教程教你用两种最常用方法在 Java 中生成随机值:java.util.Random 与 Math.random()。两者均属 JDK,但服务略不同的用例并提供独特特性。
- java.util.Random —— 生成任意基本类型数值,可设种子以复现序列。
- Math.random() —— 无需创建对象即可快速获取 [0.0, 1.0) 区间的 double。
用 java.util.Random 生成随机数
Random 类可产生 int、long、float、double、boolean。实例化一次并复用对象以避免性能开销。
下面完整示例输出 10 个 0-99(含)随机整数。若需上界含边界,参数加 1。
import java.util.Random; public class RandomNumbers { public static void main(String[] args) { Random rng = new Random(); for (int i = 0; i < 10; i++) { int randomNumber = rng.nextInt(100); // 0‑99 System.out.println("Random No: " + randomNumber); } } }
典型输出:
Random No: 17 Random No: 57 Random No: 73 Random No: 48 Random No: 68 Random No: 86 Random No: 34 Random No: 97 Random No: 73 Random No: 18
Random 对大多数用途线程安全,可跨多线程共享同一实例。为得可复现序列,传种子:new Random(42)。
用 Math.random() 生成随机数
仅需 [0.0, 1.0) 区间快速 double 时,Math.random() 便捷。内部委托单个 Random 实例,小负载下高效。
示例:生成 10 个 double 值。
public class DemoRandom { public static void main(String[] args) { for (int i = 0; i < 10; i++) { System.out.println(Math.random()); } } }
典型输出:
0.46518450373334297 0.14859851177803485 0.5628391820492477 0.6323378498048606 0.1740198445692248 0.9140544122258946 0.9167350036262347 0.49251219841030147 0.7426056725722353
生成其他区间整数或 double,结合 Math.random() 算术即可。如获 1-10 含边界随机 int:(int)(Math.random() * 10) + 1。
关键要点
- 需多种基本类型或可复现序列(种子)用
java.util.Random。 - 快速一次性 [0.0, 1.0) double 用
Math.random()。 - 始终复用同一
Random实例避免重复种子开销。 - 并发环境下高性能线程安全随机性,考虑
ThreadLocalRandom(Java 7+)。
java
- Java EE应用部署Microsoft Azure全流程实战指南
- Java List 接口:概览、实现类与关键方法
- Java TreeMap 完全掌握:有序 Map 实战指南
- 精通 Java ConcurrentHashMap:操作、示例与最佳实践
- 掌握 Java 集合算法:排序、打乱、搜索与更多实用操作
- Java 对象数组创建:分步指南
- Java String length() 方法:获取字符串长度(示例)
- 精通 Java String compareTo():语法、用例与实战示例
- Java BufferedReader 读取文件:实战指南与示例
- Java 中 char 与 String 相互转换:实用示例与最佳实践
- Java 递归反转字符串:原理、代码实现与性能分析
- Java 8 Stream API:声明式数据处理与并行计算完全指南