假如有一个数组是这样子:
如何随机打乱数组顺序,也即洗牌。
有一个比较广为传播的简单随机算法:
实际证明上面这个并不完全随机。
随便一搜网上太多这种东西了,看一下stackoverflow上的一个高分回答,答案出自github上。
knuth-shuffle The Fisher-Yates (aka Knuth) shuffle for Browser and Node.JS
下面一起看看上面说的这个算法,代码如下:
作者推荐使用浏览器写法:
Nodejs:
还有其它从这个算法中变形去的,比如下面这个for循环的。其它的就不说了。
0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
使用ES2015(ES6)
>> 0;
[this[m],this[i]] = [this[i],this[m]]
}
return this;
}
使用:
发现中文搜索随机算法一大堆,但究竟是不是完全随机,效率和兼容性都有待考究,建议后面如果有需要用到随机打乱数组元素,可以用上面这个。
原文链接:https://www.f2er.com/js/46888.html