本文详细解析如何利用 JavaScript 的 Math.random() 函数生成指定范围 [n, m] 内的随机整数。文章分四种情况(含左不含右、不含左含右、不含两端、含两端)逐步推导算法,并结合具体代码示例说明 Math.round、Math.floor 和 Math.ceil 的应用,帮助开发者掌握验证码等场景下的随机数生成技巧。
摘要:
Math.random() 基础与区间生成原理
本文阐述利用js生成n至m区间内随机数的方法,旨在为后续js生成验证码功能奠定基础。
Math.random()函数用于返回介于0与1之间的伪随机数,取值范围包含0但不包含1,即[0,1)。
四种常见区间随机整数生成方法
生成n至m区间的整数,结果包含n但不包含m:
第一步计算m与n的差值,记为w。
第二步执行Math.random()*w。
第三步执行Math.random()*w+n。
第四步执行parseInt(Math.random()*w+n, 10)。
生成n至m区间的整数,结果不包含n但包含m:
第一步计算m与n的差值,记为w。
第二步执行Math.random()*w。
第三步执行Math.random()*w+n。
第四步执行Math.floor(Math.random()*w+n) + 1。
生成n至m区间的整数,结果既不包含n也不包含m:
第一步计算m减n再减2的差值,记为w。
第二步执行Math.random()*w。
第三步执行Math.random()*w+n +1。
第四步执行Math.round(Math.random()*w+n+1) 或者 Math.ceil(Math.random()*w+n+1)。
生成n至m区间的随机数,结果同时包含n和m:
第一步计算m与n的差值,记为w。
第二步执行Math.random()*w。
第三步执行Math.random()*w+n。
第四步执行Math.round(Math.random()*w+n) 或者 Math.ceil(Math.random()*w+n) 例子:
代码示例:生成指定范围随机数
生成800至1500的随机整数,结果包含800但不包含1500。
代码如下:
1500-800 = 700
Math.random()*700
var num = Math.random()*700 + 800;
num = parseInt(num, 10);仅需简单四步即可完成。
相关取整函数说明与工具推荐
补充:
Math.ceil()函数返回大于或等于给定数字参数的最小整数,用于数字的上舍入操作。
Math.floor()函数返回小于或等于给定数字参数的最大整数,用于数字的下舍入操作。
Math.round()函数返回与给定数字最接近的整数,执行四舍五入操作。
PS:此处提供两款相关在线工具供参考使用:
在线随机数字/字符串生成工具: http://tools.jb51.net/aideddesign/suijishu
高强度密码生成器: http://tools.jb51.net/password/CreateStrongPassword