引言
最近在看underscore.js的源码,看到shuffle函数,想起Java集合工具中也有这么个函数,就顺便仔细研究了一下,思路非常简单:一个迭代下标i从后往前移动,每次取0~i之间的一个随机下标rand,将其对应元素和i所在的元素交换。i也可以从前往后迭代。
underscore.js的shuffle
_.shuffle = function(obj) {
var set = isArrayLike(obj) ? obj : _.values(obj);//[]或{}类型
var length = set.length;
var shuffled = Array(length);
for (var index = 0, rand; index < length;