# Randomise JavaScript Array

Randomising a JavaScript array can be done in one or two ways. The easy way is to create a function that returns a random number and then use the sort() function of the Array object to sort the array by a random value.

``````// random number
function randNumber(){
return (Math.round(Math.random())-0.5);
}

// create array
var numbers = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9);
// print array
//randomise array
numbers.sort(randNumber);
//print random array

The sort function works by taking the randNumber function as a parameter. For every item of the array it uses this function to compare one value to the next. If the function returns a random number then the array will be sorted randomly.

The second method is slightly more complex and involves using the Fisher Yates randomising algorithm. The following function takes in an array and returns a randomly sorted array.

``````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;
}``````

Use the function in the following manner.

``````var numbers = new Array(1,2,3,4,5,6,7,8,9);
numbers= fisherYates(numbers);

I am sorry. My English is just a little. I hope that you can understand me.

I tested fisherYates function.

fisherYates function is no good.

The Better Ways is blelow method.

OneArray.sort(function(){return Math.random() - Math.random();});

This sort function is more equitable !

var OneArray=[1,2,3,4,5,6,7,8,9,0];

Result 1, 2

OneArray.sort(function(){return Math.random() - Math.random();});

(1061) 0
(1003) 1
(990) 2
(964) 3
(1025) 4
(1010) 5
(970) 6
(996) 7
(1029) 8
(952) 9

(989) 0
(1029) 1
(1021) 2
(983) 3
(981) 4
(1004) 5
(948) 6
(963) 7
(1023) 8
(1059) 9
-------------

fisher Yate funcion test

(1007) 0
(1048) 1
(992) 2
(1026) 3
(1004) 4
(981) 5
(950) 6
(1052) 7
(1000) 8
(940) 9

(1025) 0
(1027) 1
(965) 2
(990) 3
(984) 4
(1042) 5
(997) 6
(1024) 7
(953) 8
(993) 9

(1014) 0
(1014) 1
(984) 2
(1058) 3
(979) 4
(996) 5
(1014) 6
(978) 7
(977) 8
(986) 9