生成指定范围随机数的核心是将Math.random()返回的[0,1)值线性映射到目标区间:浮点数用Math.random()(max-min)+min得[min,max),整数用Math.floor(Math.random()(max-min+1))+min得[min,max]。

用 Math.random() 生成指定范围的随机数,核心是把它返回的 [0, 1) 区间值,线性映射到目标区间上。
生成 [min, max) 区间的随机浮点数
Math.random() 每次返回一个大于等于 0、小于 1 的浮点数。要扩展到 [min, max)(左闭右开),只需做一次缩放和平移:
- 先乘以区间长度:
Math.random() * (max - min)→ 得到[0, max - min) - 再加最小值:
Math.random() * (max - min) + min→ 得到[min, max)
例如生成 [5, 10) 的随机浮点数:
生成 [min, max] 区间的随机整数
整数需配合 Math.floor 或 Math.round,但要注意边界处理。常用且安全的方式是:先生成 [min, max + 1) 的浮点数,再向下取整:
立即学习“Java免费学习笔记(深入)”;
Math.floor(Math.random() * (max - min + 1)) + min- 原理:长度为
max - min + 1,覆盖所有整数点,floor确保结果落在[min, max]
例如生成 1 到 6 的随机整数(模拟骰子):
Math.floor(Math.random() * 6) + 1常见错误和注意事项
- 用
Math.round()容易导致端点概率减半(如round(0.4)和round(0.6)都可能得 0 或 1,而 0.5 只占一小段) -
Math.ceil()配合不当会漏掉最小值,比如Math.ceil(Math.random() * 5)只能得 1–5,不是 0–5 - 如果需要严格
[min, max]浮点数(包含 max),可改用:Math.random() * (max - min) + min,但由于浮点精度限制,max极难精确命中,通常按[min, max)处理更合理


















