随机化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);