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

Pikmin Bloomというゲームがあります。先日新年のイベントで、2023眼鏡をつけたピクミンがでてくるというものがありました。7種類のピクミンがいて、一様にランダムにでてくるとして、全てをそろえるには何匹ひっこぬけばいいのかをシミュレーションしてみました。

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

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

7種のピクミンを全部集めるには平均で18回引っこ抜かないとだめなことがわかります。結構大変です。

In [2]:
# 度数分布図
hist(try, xlab='引っこ抜いたピクミン', ylab = '度数', main = '')
In [3]:
d <- data.frame(cumsum(table(try)))
plot(as.numeric(rownames(d)), d[,1] / 1e2, type = 'b', xlab = '引っこ抜いたピクミン', ylab = '累積割合 (%)', main = '')

累積割合は上のようになります。7種類全部そろうのに10匹以下が10%、20匹までで70%、28匹で90%という感じです。30匹以上必要な場合が7%ぐらいです。頑張ってください。