Pikmin Bloomというゲームがあります。先日新年のイベントで、2023眼鏡をつけたピクミンがでてくるというものがありました。7種類のピクミンがいて、一様にランダムにでてくるとして、全てをそろえるには何匹ひっこぬけばいいのかをシミュレーションしてみました。
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)
7種のピクミンを全部集めるには平均で18回引っこ抜かないとだめなことがわかります。結構大変です。
# 度数分布図
hist(try, xlab='引っこ抜いたピクミン', ylab = '度数', main = '')
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%ぐらいです。頑張ってください。