なんか prototype に shuffle 生やしたら空でも length が 1 になって困ったので普通に関数にした
1 2 3 4 5 6 7 8 9 10 |
function shuffle(arr) { var i = arr.length; while (i--) { var j = Math.floor( Math.random() * (i + 1) ); var t = arr[i] arr[i] = arr[j]; arr[j] = t; } return arr; }; |
# 追記: コメントでの指摘をうけて修正しました。
これだと偏りませんか?
https://gist.github.com/hanabokuro/450513ac2d6ed3e98c62
Math.floor( Math.random() * (i + 1) );
な気がします
おお、ほんとですね。
配列の最初の方に後ろの方が若干偏ってしまいますね。