首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >js打乱数组内元素顺序(Fisher–Yates shuffle洗牌算法)

js打乱数组内元素顺序(Fisher–Yates shuffle洗牌算法)

原创
作者头像
IT工作者
发布于 2022-05-11 17:08:31
发布于 2022-05-11 17:08:31
2.3K0
举报
文章被收录于专栏:程序技术知识程序技术知识

如何将数组内元素顺序打乱呢?这里小shy向大家介绍一种算法。

Fisher–Yates shuffle:洗牌算法。

通俗理解:

先将数组最后一位元素作为参考点,将这个参考点和数组其他位置的元素(使用随机数获得)交换位置(当然也有不改变其位置的情况);

然后将数组倒数第二位元素作为参考点,将这个参考点和数组其他位置的元素(使用随机数获得)交换位置(当然也有不改变其位置的情况);

然后将数组倒数第三位元素作为参考点,将这个参考点和数组其他位置的元素(使用随机数获得)交换位置(当然也有不改变其位置的情况);

以此类推,直到参考点为数组第一位元素交换完毕之后结束。最终得出一个打乱顺序的数组。

应用场景:随机展示图片、随机音乐播放等等。

代码实现

代码语言:javascript
复制
const students = ["学生1", "学生2", "学生3", "学生4"];
let len = students.length, index; // index: 随机数
for (let point = len - 1; point >= 0; point--) {
    index = Math.floor(Math.random() * point);
    // 交换两个元素的值(在上一篇介绍过几种方法)
    students[index] = [students[point], students[point] = students[index]][0];
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档