Javascriptで配列をシャッフル [ javascript ]

配列の中身をランダムな順番に並べ替える方法。カードゲームとかランダムスライドショーとか作るときに便利?

Example:

var s = ["AA", "BB", "CC", "DD", "EE", "FF", "GG"];
document.write("Original [" + s.toString() + "]");

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

document.write("<br/>Shuffled [" + s.toString() + "]");

Result: (リロードすると再度シャッフル)

キモはこの一行。
ソートの大小判定関数での判定を乱数で実行することでシャッフル。

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

多少偏りが出るのかどうかはよく分からないけど、そこそこランダムっぽくて十分使える。
…このやり方を知るまでは結構煩雑なコード書いて似たような事をしていたのに、一行でできてしまうとは。
奥深いね。

0 件のコメント:

コメントを投稿