适用于打乱一串数组,同时也适用于在数组中随机抽取多个元素不重复
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));