适用于打乱一串数组,同时也适用于在数组中随机抽取多个元素不重复
var knuth = (arr)=>{
var swap = (ar, ia, ib)=>{
var temp = ar[ia];
ar[ia] = ar[ib];
ar[ib] = temp;
};
var rand = (a,b)=>{
return Math.ceil(a) + Math.floor(Math.random() * Math.floor(b-a));
}
for(var i = arr.length - 1; i >= 0 ; i -- )
swap(arr,i, rand(0, i)) // rand(0, i) 生成 [0, i] 之间的随机整数
return arr;
}
knuth(new Array(8).fill(0).map((item,index)=>index));