math.random() 生成 [min, max) 区间随机数的公式为 min + math.random() * (max - min),适用于数组索引、不包含上限的整数等场景。

用 Math.random() 生成指定范围的随机数,核心是把它返回的 [0, 1) 小数,线性映射到你想要的区间上。
生成 [min, max) 区间的随机数(左闭右开)
这是最直接的映射方式,适合大多数场景,比如取数组索引、生成不包含上限的整数等。
-
Math.random()返回值范围是0 ≤ x - 乘以区间长度
(max - min),得到0 ≤ x - 再加
min,就变成min ≤ x
写成代码就是:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
生成 [min, max] 区间的随机整数(含两端)
如果需要整数且上下限都要包含(比如骰子 1–6),需配合 Math.floor 或 Math.round,但要注意边界处理。
- 推荐用
Math.floor(Math.random() * (max - min + 1)) + min - 原理:先算出共多少个整数(
max - min + 1),生成[0, count)的整数索引,再平移到[min, max] - 例如生成 1–6:
Math.floor(Math.random() * 6) + 1
生成 (min, max) 区间的随机数(开区间)
如果明确不想包含任一端点,可对 Math.random() 做微小扰动,或用两次随机避开边界——但实践中极少需要严格开区间。更稳妥的做法是:先生成 [min, max],再检查并重试(仅在要求极严时考虑)。
- 简单替代:用
min + Math.random() * (max - min)得到[min, max),再确保结果 ≠ min(如加一个极小偏移) - 一般情况无需过度处理,
[min, max)已足够接近需求
常见错误提醒
避免这些典型误区:
- 写成
Math.random() * max + min—— 这实际是[min, min+max),不是你想要的范围 - 用
Math.round()生成整数 —— 会导致两端概率减半(如 1 和 6 出现概率只有 2–5 的一半) - 忘记括号导致运算顺序错误,比如
Math.random() * max - min不等于Math.random() * (max - min)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










