JavaScript生成指定长度随机数的三种方案对比
作者:青柠时间:2026-10-28 15:37:18浏览:350
本文对比了JavaScript中生成指定长度随机数的三种方法:基于时间戳截取的简单方案、利用Math.random递归保证首位非零的方案,以及通过循环逐位生成并处理首位为0情况的方案。分析各方法在位数限制、首位约束及实现复杂度上的差异,帮助开发者根据实际需求选择合适算法。
基于时间戳截取的随机数生成
第一种方案通过获取当前时间戳来生成随机数。该方法将生成的随机数位数限制在最大13位,且不对首位是否为零做特殊处理,允许首位为0。
function ran(m) {
m = m > 13 ? 13 : m;
var num = new Date().getTime();
return num.toString().substring(13 - m);
}
console.log(ran(5));
基于Math.random且保证首位非零的方案
第二种方案基于Math.random函数生成随机数。此方法生成的随机数最大不超过16位,并通过递归逻辑确保生成的随机数首位不为0。
function rand(m) {
m = m > 16 ? 16 : m;
var num = Math.random().toString();
if(num.substr(num.length - m, 1) === '0') {
return rand(m);
}
return num.substring(num.length - m);
}
console.log(rand(5));
无位数限制且首位非零的循环生成方案
第三种方案同样基于Math.random函数,但采用循环逐位生成的方式。该方法对位数没有上限限制,并通过逻辑判断确保首位不为0。
function rando(m) {
var num = '';
for(var i = 0; i < m; i++) {
var val = parseInt(Math.random()*10, 10);
if(i === 0 && val === 0) {
i--;
continue;
}
num += val;
}
return num;
}
console.log(rando(5));
作者最新文章
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
