JavaScript随机打乱数组顺序之随机洗牌算法

前端之家收集整理的这篇文章主要介绍了JavaScript随机打乱数组顺序之随机洗牌算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

假如有一个数组是这样子:

如何随机打乱数组顺序,也即洗牌。

有一个比较广为传播的简单随机算法:

实际证明上面这个并不完全随机

随便一搜网上太多这种东西了,看一下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

猜你在找的JavaScript相关文章