目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
洗牌算法是我们常见的随机问题,在玩游戏、随机排序时经常会碰到,本质是让一个数组内的元素随机排列。
洗牌算法是一种随机排序的算法,其排序思想是:首先生成一个有序的数组,然后从数组中随机抽取两个元素交换位置,重复这个过程若干次,就变成了一个随机的数组。
如何实现一个简单的洗牌算法?
var oneArray = [1,2,3,4,5,6,7,8];
console.log(oneArray);
Array.prototype.shuffle = function () {
var a = oneArray;
for(var i = a.length - 1;i >= 0; i--){
var randomIndex = Math.floor(Math.random()*(i + 1));
var itemAtIndex = a[randomIndex];
a[randomIndex] = a[i];
a[i] = itemAtIndex;
}
return a;
};
console.log(oneArray.shuffle());
主要代码
function shuffle(array) {
var copy = [],
n = array.length,
i;
while (n) {
i = Math.floor(Math.random() * array.length);
if (i in array) {
copy.push(array[i]);
delete array[i];
n--;
}
}
return copy;
}
主要代码
function shuffle(array) {
var copy = [],
n = array.length,
i;
while (n) {
i = Math.floor(Math.random() * n--);
copy.push(array.splice(i, 1)[0]);
}
return copy;
}
主要代码
function shuffle(array) {
var m = array.length,
t, i;
while (m) {
i = Math.floor(Math.random() * m--);
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
一、javascript随机之洗牌算法深入分析
二、【算法详解】洗牌算法
三、数组的完全随机排列
四、由乱序播放说开了去-数组的打乱算法
感谢大家观看
By 汪胜