Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, 04-09-2010
おまけの問題のシンプルな発展で,ハズレがあることにする.
当たりだったら6種類のおまけが同じ割合で入っているのだけど,ハズレもある.
ちょこちょこと細かいところで変わるけれど,大筋では大した違いはない.
当たりの確率を q とすると,k 個買って x 種類の確率は
と書ける.前の2項は q がくっついただけで他は全く変わっていない.3項目は,ハズレだったらおまけの種類は増えないので,その時の確率.
これを計算する上では,p(0,0)=1 とする.他にも買った数がおまけの数より少ないケースとか,おまけが -1個のケースとかは確率は全て0 にして計算する.
q=1 の場合はハズレなしなので,シンプルなケースに戻る.
Rでプログラムを書いて解く.
coupon.collectors <- function(m,q=1,tol=1e-5){
# m is the number of coupon types
# 1-q = P[ no coupons inside ]
out <- numeric(m+1) ; out[1] <- 1-q ; out[2] <- q
out <- t(matrix(out))
finish <- F ; i <- 2 ; tol <- max(tol, 1e-5)
while(!finish){
qr <- q * (1-(0:m)/m)
out <- rbind( out, out[(i-1),] * (1- qr) + c(0, out[(i-1),] * qr)[1:(m+1)])
finish <- out[i,m+1] > 1-tol ; i <- i + 1
}
out <- data.frame(round(out,abs(log(tol,10))-1)) ; names(out) <- 0:m
out
}
○○○
僕はスパゲッティの問題のときと同じように帰納的に解く方法を書いたのだけど,そうじゃなくて直接的に求める方法もある.いろいろインターネットをふらふらしていたら,そっちの解き方は Weblog on mebius.tokaichiba.jp に判りやすく書いてあったので,ま,いいかということになった.
○○○
おまけの問題:前置き
おまけの問題:問題
おまけの問題:答1
おまけの問題:答2
おまけの問題:答3
おまけの問題:発展問題