使用费雪 - 耶茨算法对数组进行洗牌

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将探索费雪 - 耶茨(Fisher-Yates)算法及其在 JavaScript 中的实现。具体来说,我们将重点关注如何使用该算法对数组进行洗牌操作。在本实验结束时,你将更好地理解费雪 - 耶茨算法的工作原理,以及如何使用它来随机化数组中元素的顺序。

数组洗牌算法

要在 JavaScript 中对数组进行洗牌操作,请使用费雪 - 耶茨(Fisher-Yates)算法。该算法会随机重新排列数组中的元素,并返回一个新数组。

要开始练习编码,请打开终端/SSH 并输入 node

以下是费雪 - 耶茨算法的代码:

const shuffle = ([...arr]) => {
  let m = arr.length;
  while (m) {
    const i = Math.floor(Math.random() * m--);
    [arr[m], arr[i]] = [arr[i], arr[m]];
  }
  return arr;
};

要对数组进行洗牌操作,将数组传递给 shuffle 函数,它将返回洗牌后的数组。例如:

const foo = [1, 2, 3];
shuffle(foo); // 返回 [2, 3, 1],而 foo 仍然是 [1, 2, 3]

总结

恭喜你!你已经完成了数组洗牌实验。你可以在 LabEx 中练习更多实验来提升你的技能。