2021-11-03 01:32:58
在 JavaScript 中,生成不同范围和类型的随机数主要依赖 Math.random() 函数,它返回一个 0(包含)到 1(不包含) 之间的浮点数。以下是具体实现方法:
1. 生成浮点数随机数0 到 1 之间(不包含 1)直接使用 Math.random():
const randomFloat = Math.random(); // 示例:0.123456指定范围 [min, max)通过缩放和偏移实现:
function getRandomFloat(min, max) { return Math.random() * (max - min) + min;}const floatInRange = getRandomFloat(2.5, 5.5); // 示例:3.7890 到 n-1 之间的整数使用 Math.floor() 向下取整:
const randomInt = Math.floor(Math.random() * 10); // 0~9指定范围 [min, max](包含两端)结合 Math.floor() 和范围计算:
function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min;}const intInRange = getRandomInt(1, 6); // 1~6(模拟骰子)生成 0 或 1(布尔型)使用 Math.round() 或直接比较:
const randomBinary = Math.round(Math.random()); // 0 或 1// 或const randomBinary = Math.random() < 0.5 ? 0 : 1;均匀分布默认 Math.random() 即为均匀分布,直接使用上述方法即可。
其他分布(如高斯分布)需借助算法(如 Box-Muller 变换):
function gaussianRandom(mean = 0, stdev = 1) { const u = 1 - Math.random(); const v = Math.random(); const z = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v); return z * stdev + mean;}const gaussianValue = gaussianRandom(5, 2); // 均值为5,标准差为2从数组中随机选取元素
const colors = ['red', 'green', 'blue'];const randomColor = colors[Math.floor(Math.random() * colors.length)];生成随机字符串结合字符集和循环:
function randomString(length) { const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; let result = ''; for (let i = 0; i < length; i++) { result += chars.charAt(Math.floor(Math.random() * chars.length)); } return result;}const str = randomString(8); // 示例:"aB3dE9fG"通过组合 Math.random() 和数学运算,可以灵活生成各种范围和类型的随机数。根据需求选择合适的方法即可。