js 打乱数组
半随机打乱法
var arr = ["a", "b", "c", "d", "e","f","g"]; arr.sort(function () { return 0.5 - Math.random() }) var newArr = arr.join(); console.log(newArr);
来看看运行结果
出现上面的概率有多大呢,再多刷几次
发现并不是完全随机,因为0.5 - Math.random()这个运算的结果要么是大于0,要么是小于0,这样要么交换位置,要么不交换位置.
完全随机打乱法
function shuffle(array) {
if (!Array.isArray(array)) {
return array;
}
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]]
}
return array;
}
var arr = ["a", "b", "c", "d", "e","f","g"];
console.log(shuffle(arr));
运行结果:
Math.floor(Math.random() * (i + 1));随机生成数字进行交换.