📜  js 随机数数组 - Javascript (1)

📅  最后修改于: 2023-12-03 15:02:25.514000             🧑  作者: Mango

JS生成随机数数组

有时候我们需要在JavaScript中随机生成一些数字数组。下面介绍几种方法:

方法一:使用Math.random()函数

可以使用Math.random()函数生成0到1之间的浮点数。通过乘以一个值,再向下取整,就可以生成指定范围内的整数。例如,以下代码可以生成一个长度为length、每个数字范围在minmax之间的整数数组:

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()函数

也可以先生成一个数字数组,然后使用Array.sort()函数进行随机排序。例如,以下代码可以生成一个长度为length、每个数字范围在minmax之间的整数数组:

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算法

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]

以上就是三种生成随机数数组的方法,根据需要选择其中一种即可。