こんうさピーリスナーが選ぶモーニング娘。の好きな曲ベスト10

モーニング娘。道重さゆみの今夜も♥うさちゃんピース」が枠移動になるため、総括として行った企画。投票総数275、1位が38票、10位が20票。しかし、同順位はない。この票差で同順位がないのは不自然な気がする。考察してみる。


まず、票数が少なすぎてこの順位に意味は無い。試しに、275人がランダムに10曲から1曲選んで投票したとき、1位と10位が何票になるか調べてみた。

真ん中の黄色の四角が1位が38票、10位が20票である。この票数が典型的であることがわかる。すなわち、曲に優劣はない。ここではこの投票に意味がないと言っているわけではない。これは次のステップに進むための前提が外れていないことを確認しているのみである。
そこで、同じようにランダムに選んで、1位の票数が38票、最下位の票数が20票だったときに、同順位がない確率を求める。10万回試行してみた。
すると、同順位があったのが1330回、なかったのが133回。すなわち、9%の確率で同順位がない。まあ、不自然とまでは言えないかな。


最後に、WScript/JavaScriptによるソースをつけておく。



var N = 10;
var n = 1000;
var m = 275;
for(var i = 0; i < n; i++)
run();

function run() {
var a = [ ];
for(var i = 0; i < N; i++)
a.push(0);

for(var i = 0; i < m; i++)
a[Math.floor(Math.random() * N)]++;

var min = m;
var max = 0;
for(var i = 0; i < N; i++) {
if(a[i] < min)
min = a[i];
if(a[i] > max)
max = a[i];
}
print([min, max]);
}

function print(str) {
WScript.Echo(str);
}


var N = 10;
var n = 100000;
var m = 275;
var amin = 20;
var amax = 38;

var with_same_rank = 0;
var less_same_rank = 0;
for(var i = 0; i < n; i++)
run();
print([with_same_rank, less_same_rank]);

function run() {
var a = [ ];
for(var i = 0; i < N; i++)
a.push(0);

for(var i = 0; i < m; i++)
a[Math.floor(Math.random() * N)]++;

var min = m;
var max = 0;
for(var i = 0; i < N; i++) {
if(a[i] < min)
min = a[i];
if(a[i] > max)
max = a[i];
}

if(min == amin && max == amax) {
if(is_with_same_rank(a))
with_same_rank++;
else {
less_same_rank++;
print(a);
}
}
}

function is_with_same_rank(a) {
a.sort();
for(var i = 1; i < a.length; i++) {
if(a[i] == a[i-1])
return true;
}
return false;
}

function print(str) {
WScript.Echo(str);
}