PHPには、shuffleという配列をシャッフルしてくれる関数があるけど、JavaScriptにはない。
なので、Fisher-Yates shuffleというアルゴリズムでシャッフルする関数を作ってみた。
/**
* 関数:array_shuffle
* 説明:引数の配列をシャッフルした結果を返す
* 引数:
* array arr 配列
* 戻り:
* array arr シャッフルした配列
*/
function array_shuffle(arr) {
ret = arr.concat();
for(var i = ret.length - 1; i > 0; i--){
var r = Math.floor(Math.random() * (i + 1));
var tmp = ret[i];
ret[i] = ret[r];
ret[r] = tmp;
}
return ret;
}
// array_shuffleを実行
var arr = [0,1,2,3,4,5,6,7,8,9];
var result = array_shuffle(arr);
console.log(arr);
console.log(result);