Fisher–Yates shuffle 洗牌算法 数组随机排序 数组打乱
Fisher–Yates shuffle 算法随机过程如下:
得到一个已知的数组。
从当前区间中随机获得一个数字 K。
从低位开始,得到第 index 个数字,把它放到新数组的最后一位。
重复第二步,直到所有的数字都被取出。
shuffle(arr){
// Fisher–Yates shuffle 洗牌算法
console.log(arr)
for (let i = arr.length - 1; i > 0; i--) {
const index = Math.floor(Math.random() * (i + 1));
console.log(index)
const element = arr[index];
arr[index] = arr[i];
arr[i] = element;
console.log(arr)
}
return arr
}
实现过程如下: