让一个数组乱序
题目:把一个数组随机打乱顺序。
const arr = [1, 2, 3, 4, 5].sort(() => 0.5 - Math.random());
注:
Array.prototype.sort不是严格的均匀分布,仅作示意。
补充
补充:乱序算法的标准做法是 Fisher–Yates 洗牌:从后向前遍历,每个元素与它前面的随机一个位置交换,时间 O(n)、空间 O(1),分布均匀。
// Fisher–Yates 洗牌(推荐)
function shuffle(arr) {
const a = arr.slice();
for (let i = a.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[a[i], a[j]] = [a[j], a[i]];
}
return a;
}
shuffle([1, 2, 3, 4, 5]);



