程序员社区

如何实现数组的随机排序

1、使用sort对数组进行排序,使用Math.random()来生成一个随机数,来和0.5进行比较。
代码如下所示:
function sortRandom(array) {
  return array.sort((a, b) => Math.random() > 0.5 ? 1 : -1)
}
不过存在缺点:每一个元素被指派到的位置不是随机的,因为sort()函数是随机分配
的。
2、当原来的数组还存在的时候,使用Math.random()生成一个随机数,然后使用
Math.random() * arr.length向下取整,得到一个下标,然后将其放入另一个数
组中,从而实现打乱顺序。
function randomSort(arr) {
  let result = []
  while (arr.length) {
    let index = Math.floor(Math.random() * arr.length)
    result.push(arr[index])
    arr.splice(index, 1)
  }
  return result
}
3、进行遍历循环数组中的每一项,然后将该项和后面的一项进行交换。
function randomSort(array) {
  let length = array.length
  let temp
  let tempIndex
  for(let i = 0; i < length; i++) {
    tempIndex = Math.floor(Math.random() * (length - i)) + i
    temp = array[i]
    array[i] = array[tempIndex]
    array[tempIndex] = temp
  }
  return array
} 
4、将3中的方法使用es6语法进行重写。
function randomSort(array) {
  let length = array.length;
  // 不是数组或者数组长度小于等于1,直接返回
  if (!Array.isArray(array) || length <= 1) return;
  for (let index = 0; index < length - 1; index++) {
    let randomIndex = Math.floor(Math.random() * (length - index)) + index;
    [array[index], array[randomIndex]] = [array[randomIndex], array[index]];
  }
  return array;
}

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 如何实现数组的随机排序

一个分享Java & Python知识的社区