原文链接:https://juejin.im/post/5d004ad95188257c6b518056
原文有更详细的推导及测试过程,本文仅为个人记录,侵删
Fisher–Yates 算法
function shuffle(arr) {
let m = arr.length;
while (m > 1){
let index = Math.floor(Math.random() * m--);
[arr[m] , arr[index]] = [arr[index] , arr[m]]
}
return arr;
}