昨日の TechCrunch 日本語版に出てた「ヨーロッパ人のためのランダムなブラウザ選択画面‐その‘ランダム性’を検証してみた」が気になったのでソースを覗いてみた。
肝心な部分は次のスクリプト。
var aBrowserOrderTop5 = new Array(0,1,2,3,4);
aBrowserOrderTop5.sort(RandomSort);
function RandomSort (a,b){return (0.5 - Math.random());}
ランダムソートをsortの比較関数でやっつけているw。この発想、思いつかんわwww。
噂によれば IE の擬似乱数がダメダメだからだとか言われているけど、ランダムソートはちゃんと関数書いたほうがよろしいようで、という教訓として語られるべき話のようです。
以下参考までに、1万回ループさせて調べた結果。
ランダムなら 10000 / 5 = 2000 が期待値となるので、単純にカイ2乗検定してみると、手許のブラウザはすべて1%有意水準で有意差あり(ランダムでない)。一番まともに見えた Safari でさえ P = 10-211。というかそれ以外は32bitマシンで普通に計算すると確率は0という結果…。
比較関数が呼び出される平均回数は、IE で9.77回、Firefox で6.18回、Safari で6.74回、Chrome で6.76回、Opera で6.12回。
ちなみにブラウザのバージョンはすべて最新。
※ 図中の記号は、SA:Safari、GC:Google Chrome、OP:Opera、MF:Mozilla Firefox、IE:Internet Explorer。A~E は配置。





![a tick bit me!! [#57953]](http://farm3.static.flickr.com/2551/3946786265_13f3245334_o.jpg)
![Water Front (HDR) [#50366]](http://farm3.static.flickr.com/2567/3801136008_2fd212ed70_o.jpg)
![Bandai Taiko [#50640]](http://farm4.static.flickr.com/3571/3801136010_9fe2608b3c_o.jpg)
![Mikoshis of Niigata Festival at the Hakusan Shrine of Niigata [#50676]](http://farm3.static.flickr.com/2616/3801136014_c84434ccf8_o.jpg)
![27th Science-cafe Niigata [#50438]](http://farm4.static.flickr.com/3562/3801136006_50c277ef31_m.jpg)
![Sekiya bunsui [#49907]](http://farm3.static.flickr.com/2578/3751613717_571d5fee0c.jpg)
