详解JS数组的完全随机排列算法
1. 算法原理
完全随机排列算法是指将一个数组中的元素完全随机地排列,使每个元素出现在每个位置的可能性相同。
算法的实现原理是:
- 从数组的最后一个位置开始依次向前遍历,对于每个位置i,随机生成一个介于[0,i]之间的整数j
- 将位置i上的元素与位置j上的元素交换
经过这样的遍历,整个数组就被完全随机排列了。
2. JS代码实现
以下是JS代码的实现:
function shuffle(array) {
var len = array.length;
for (var i = len - 1; i >= 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
代码中的参数array是需要被随机排列的数组,返回值为排列好的新数组。具体实现中,从后向前遍历数组,每次生成介于[0,i]之间的随机数j,然后将位置i上的元素与位置j上的元素进行交换,这样最终遍历完数组后得到的就是一个完全随机排列的新数组。
3. 示例说明
示例1: 随机排序一组数组
var arr1=[1, 2, 3, 4, 5, 6];
var arr2=shuffle(arr1);
console.log(arr2);
示例1演示了如何将一个数组随机排列,并将排列后的新数组存入另一个数组。
示例2:打乱一组DOM元素的顺序
var domList= document.querySelectorAll('.item');
var shuffledDomList = shuffle(domList);
for (var i = 0; i < shuffledDomList.length; ++i) {
container.appendChild(shuffledDomList[i]);
}
示例2演示了如何将一个DOM元素列表随机排列,然后按照新的顺序插入到文档中的父容器中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解js数组的完全随机排列算法 - Python技术站