随机化JavaScript数组
可以通过一种或两种方式对JavaScript数组进行随机化。最简单的方法是创建一个返回随机数的sort()函数,然后使用Array对象的函数按随机值对数组进行排序。
//随机数
function randNumber(){
return (Math.round(Math.random())-0.5);
}
//创建数组
var numbers = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9);
//打印阵列
alert(numbers);
//随机数组
numbers.sort(randNumber);
//打印随机数组
alert(numbers);排序函数通过将randNumber函数作为参数来工作。对于数组的每一项,它使用此函数将一个值与下一个值进行比较。如果函数返回一个随机数,则该数组将被随机排序。
第二种方法稍微复杂一些,涉及使用FisherFisher随机化算法。以下函数接收一个数组,并返回一个随机排序的数组。
function fisherYates(myArray){
var i = myArray.length;
if(i == 0){
return false;
}
while(--i){
var j = Math.floor(Math.random() * (i + 1));
var tempi = myArray[i];
var tempj = myArray[j];
myArray[i] = tempj;
myArray[j] = tempi;
}
return myArray;
}以以下方式使用该功能。
var numbers = new Array(1,2,3,4,5,6,7,8,9); alert(numbers); numbers= fisherYates(numbers); alert(numbers);