关于Js随机排列,网上查资料后mark一下。
1、网上很多同学使用这个方法实现随机排列需求的:Array.prototype.sort-但这个方法受sort采用的排序方法的限制不能做到真正的随机分布。
function randomsort(a, b) {
return Math.random()>0.5 ? -1 : 1;//用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
}
var arr = [0,1, 2, 3, 4, 5,6,7,8,9];
arr.sort(randomsort);
2.经典的随机排列, O(n) 复杂度
function shuffle(arr){
var len = arr.length;
for(var i = 0; i < len - 1; i++){
var idx = Math.floor(Math.random() * (len - i));
var temp = arr[idx];
arr[idx] = arr[len - i - 1];
arr[len - i -1] = temp;
}
return arr;
}
在上面的算法里,我们每一次循环从前 len - i 个元素里随机一个位置,将这个元素和第 len - i 个元素进行交换,迭代直到 i = len - 1 为止。