Write a function for doing an in-place shuffle of an array.
The shuffle must be "uniform," meaning each item in the original array must have the same probability of ending up in each spot in the final array.
The shuffle must be "uniform," meaning each item in the original array must have the same probability of ending up in each spot in the final array.
Assume that you have a function getRandom(floor, ceiling) for getting a random integer that is >= floor and <= ceiling.
function getRandom(floor, ceiling){
// console.log('getRandom floor:'+floor+' ceiling:'+ceiling);
return parseInt(floor) + parseInt( Math.random()*(ceiling - floor));
}
function swapInPlace(array,i,k){
//console.log('swap i:'+i+' k:'+k);
var v1 = array[i];
var v2 = array[k];
array[i] = v2;
array[k] = v1;
}
function shuffleInPlace(array) {
var floor = 0, ceiling = array.length;
for(var i in array){
var k = getRandom(i, ceiling)
swapInPlace(array,i,k);
}
}
var array = ['a','b','c'];
console.log('original array: '+array);
shuffleInPlace(array);
console.log('shuffled array: '+array);
No hay comentarios:
Publicar un comentario