js实现一个随机数
生成随机整数
使用 Math.random() 生成 [0, 1) 范围内的随机小数,结合 Math.floor 或 Math.ceil 转换为整数。
// 生成 [min, max] 范围内的随机整数
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// 示例:生成 1-10 的随机整数
const randomNum = getRandomInt(1, 10);
生成随机浮点数
直接使用 Math.random() 或扩展范围:

// 生成 [min, max) 范围内的随机浮点数
function getRandomFloat(min, max) {
return Math.random() * (max - min) + min;
}
// 示例:生成 0-1 的随机浮点数
const randomFloat = getRandomFloat(0, 1);
生成随机字符串
结合随机数和字符集生成固定长度的字符串:

function getRandomString(length) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < length; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
}
// 示例:生成 8 位随机字符串
const randomStr = getRandomString(8);
生成不重复随机数(洗牌算法)
通过 Fisher-Yates 算法打乱数组实现不重复随机:
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
// 示例:生成 1-10 的不重复随机序列
const uniqueRandom = shuffleArray([...Array(10).keys()].map(x => x + 1));
使用 Crypto API 生成高安全性随机数
适用于密码学场景,通过 crypto.getRandomValues 实现:
function getSecureRandomInt(min, max) {
const range = max - min + 1;
const bytes = new Uint32Array(1);
crypto.getRandomValues(bytes);
return min + (bytes[0] % range);
}
// 示例:生成 1-100 的安全随机整数
const secureRandom = getSecureRandomInt(1, 100);






