📅  最后修改于: 2023-12-03 15:02:25.514000             🧑  作者: Mango
有时候我们需要在JavaScript中随机生成一些数字数组。下面介绍几种方法:
可以使用Math.random()
函数生成0到1之间的浮点数。通过乘以一个值,再向下取整,就可以生成指定范围内的整数。例如,以下代码可以生成一个长度为length
、每个数字范围在min
到max
之间的整数数组:
function randomArray(length, min, max) {
return Array.from({length: length}, () => Math.floor(Math.random() * (max - min + 1)) + min);
}
使用方法:
const arr = randomArray(5, 0, 10); // 生成5个数字,范围在0到10之间
console.log(arr); // [3, 5, 8, 6, 1]
也可以先生成一个数字数组,然后使用Array.sort()
函数进行随机排序。例如,以下代码可以生成一个长度为length
、每个数字范围在min
到max
之间的整数数组:
function randomArray(length, min, max) {
const arr = Array.from({length: length}, () => Math.floor(Math.random() * (max - min + 1)) + min);
return arr.sort(() => Math.random() - 0.5);
}
使用方法:
const arr = randomArray(5, 0, 10); // 生成5个数字,范围在0到10之间
console.log(arr); // [6, 5, 3, 0, 9]
Fisher-Yates算法是一个常用的生成随机数组的算法,其原理是随机交换数组中的元素。下面是实现代码:
function randomArray(length, min, max) {
const arr = Array.from({length: length}, () => Math.floor(Math.random() * (max - min + 1)) + min);
for (let i = arr.length - 1; i > 0; i--) {
let j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
}
使用方法:
const arr = randomArray(5, 0, 10); // 生成5个数字,范围在0到10之间
console.log(arr); // [0, 6, 9, 5, 2]
以上就是三种生成随机数数组的方法,根据需要选择其中一种即可。