何匹のピクミンをひっこぬけばいいのか その2¶

Pikmin Bloomの新しいイベントで、フィンガーボードをつけたピクミンがでてくるものが始まりました。昨年4種類が登場していて、今回追加で3種類が増えました。一様にランダムにでてくるとして、全てをそろえるには何匹ひっこぬけばいいのかをシミュレーションしてみました。

In [7]:
simulate <- function (types, start){
    pikumins <- c(rep(1, start), rep(0, types - start))  # すでにもっている数をstartとして、その出現回数を1とする
    while(any(pikumins < 1)){  # どれかのピクミンが1未満の場合は新しいピクミンを引っこ抜く
        p <- ceiling(runif(1) * types)  # どのピクミンが引っこ抜かれたか
        pikumins[p] <- pikumins[p] + 1  # 引っこ抜かれたピクミンの回数を増やす
    }
    return(sum(pikumins) - start)  # 引っこ抜いたピクミンの合計
}

try <- sapply(rep(7, 1e4), simulate, start = 4)  # 7はピクミンの種類。1万回シミュレーションを行う
mean(try)
median(try)
12.8463
11

残り3種類でも平均で13回引っこ抜かないとだめなことがわかります。0から始めるときは18だったので、持っていたピクミンの数だけ減ったという感じでしょうか。

In [17]:
# 度数分布図
options(repr.plot.width=4, repr.plot.height=3) # jupyterlabでグラフを小さくするための命令
hist(try, xlab='引っこ抜いたピクミン', ylab = '度数', main = '')
<symbol overflow="visible" id="glyph0-0"> </symbol> <symbol overflow="visible" id="glyph0-1"> </symbol> <symbol overflow="visible" id="glyph0-2"> </symbol> <symbol overflow="visible" id="glyph0-3"> </symbol> <symbol overflow="visible" id="glyph0-4"> </symbol> <symbol overflow="visible" id="glyph0-5"> </symbol> <symbol overflow="visible" id="glyph0-6"> </symbol> <symbol overflow="visible" id="glyph0-7"> </symbol> <symbol overflow="visible" id="glyph0-8"> </symbol> <symbol overflow="visible" id="glyph0-9"> </symbol> <symbol overflow="visible" id="glyph0-10"> </symbol> <symbol overflow="visible" id="glyph1-0"> </symbol> <symbol overflow="visible" id="glyph1-1"> </symbol> <symbol overflow="visible" id="glyph1-2"> </symbol> <symbol overflow="visible" id="glyph2-0"> </symbol> <symbol overflow="visible" id="glyph2-1"> </symbol> <symbol overflow="visible" id="glyph2-2"> </symbol> <symbol overflow="visible" id="glyph2-3"> </symbol> <symbol overflow="visible" id="glyph2-4"> </symbol> <symbol overflow="visible" id="glyph2-5"> </symbol> <symbol overflow="visible" id="glyph2-6"> </symbol> <symbol overflow="visible" id="glyph2-7"> </symbol> <symbol overflow="visible" id="glyph3-0"> </symbol> <symbol overflow="visible" id="glyph3-1"> </symbol> <symbol overflow="visible" id="glyph3-2"> </symbol> <symbol overflow="visible" id="glyph3-3"> </symbol> <symbol overflow="visible" id="glyph3-4"> </symbol>
In [41]:
d <- data.frame(cumsum(table(try)))
plot(as.numeric(rownames(d)), d[,1] / 1e2, type = 'b', pch = 20,
     xlab = '引っこ抜いたピクミン', ylab = '累積割合 (%)', main = ''
)
sapply(c(0.5, 0.9), function (n){
    head(rownames(d)[d[,1] / 10000 > n],1)
})
  1. '11'
  2. '22'
<symbol overflow="visible" id="glyph0-0"> </symbol> <symbol overflow="visible" id="glyph0-1"> </symbol> <symbol overflow="visible" id="glyph0-2"> </symbol> <symbol overflow="visible" id="glyph0-3"> </symbol> <symbol overflow="visible" id="glyph0-4"> </symbol> <symbol overflow="visible" id="glyph0-5"> </symbol> <symbol overflow="visible" id="glyph0-6"> </symbol> <symbol overflow="visible" id="glyph0-7"> </symbol> <symbol overflow="visible" id="glyph1-0"> </symbol> <symbol overflow="visible" id="glyph1-1"> </symbol> <symbol overflow="visible" id="glyph1-2"> </symbol> <symbol overflow="visible" id="glyph1-3"> </symbol> <symbol overflow="visible" id="glyph1-4"> </symbol> <symbol overflow="visible" id="glyph1-5"> </symbol> <symbol overflow="visible" id="glyph1-6"> </symbol> <symbol overflow="visible" id="glyph1-7"> </symbol> <symbol overflow="visible" id="glyph2-0"> </symbol> <symbol overflow="visible" id="glyph2-1"> </symbol> <symbol overflow="visible" id="glyph2-2"> </symbol> <symbol overflow="visible" id="glyph2-3"> </symbol> <symbol overflow="visible" id="glyph2-4"> </symbol> <symbol overflow="visible" id="glyph2-5"> </symbol> <symbol overflow="visible" id="glyph2-6"> </symbol> <symbol overflow="visible" id="glyph2-7"> </symbol> <symbol overflow="visible" id="glyph2-8"> </symbol> <symbol overflow="visible" id="glyph2-9"> </symbol> <symbol overflow="visible" id="glyph2-10"> </symbol> <symbol overflow="visible" id="glyph3-0"> </symbol> <symbol overflow="visible" id="glyph3-1"> </symbol> <symbol overflow="visible" id="glyph3-2"> </symbol> <symbol overflow="visible" id="glyph3-3"> </symbol> <symbol overflow="visible" id="glyph3-4"> </symbol>

累積割合は上のようになります。残り3種類をそろえるのに引っこ抜いたピクミンの数が11匹までが50%、22匹までで90%という感じです。頑張ってください。