JavaScriptで配列をシャッフル

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);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です