3

さいころを何回振れば6つの目がそろうのか?(クーポンコレクター問題)

2293
1

長い数式が出てきます。スマホで閲覧の場合は横向きにすることを推奨します。

この記事でやること

次の問題を考えます。なお,この記事における「さいころ」とは,1から6の目が等確率で出力される装置のことをいいます。

クーポンコレクター問題;n=6

1つのさいころを繰り返し投げ,6つの目がすべて出るまでこの試行を続けるとき,投げた回数の期待値はいくつか?

例えば適当にさいころを繰り返し投げてみました。(正確にはPythonで,1から6までの整数値を取る疑似乱数をとっています。)5,5,1,2,2,3,2,6,4(9 times) 1,3,6,6,6,5,4,6,5,5,5,6,1,3,6,5,5,5,5,2(20 times)
運が良い人は6回で終わり,運が悪ければ100回投げても終わらないかもしれません。

この期待値の導出を,幾何分布に頼らずに2通りの計算をしてみました。

和の期待値と期待値の和

まずは1つ目の視点です。次のように考えます。

  1. 初めて1個目の目が出る回数の期待値を求める
  2. 1個の目が出ていて,そのあとに初めて2個めの目が出る回数の期待値を求める
  3. 2個の目が出ていて,そのあとに初めて3個めの目が出る回数の期待値を求める
  4. 3個の目が出ていて,そのあとに初めて4個めの目が出る回数の期待値を求める
  5. 4個の目が出ていて,そのあとに初めて5個めの目が出る回数の期待値を求める
  6. 5個の目が出ていて,そのあとに初めて6個めの目が出る回数の期待値を求める
  7. 和の期待値は期待値の和であることを用いて,求めたい期待値を出す。

赤字の部分については,次の通りです。

和の期待値は期待値の和

2つの確率変数XYについて,確率変数(X+Y)の期待値E[X+Y]について,
E[X+Y]=E[X]+E[Y]が成り立つ。

つまり,1.から6.までで出した期待値の和を取ればよいですね。

まず,初めて1個の目が出る期待値は1回ですね。自明です。

次に,「1個の目が出ていて,そのあとに初めて2個めの目が出る期待値」を求めましょう。この期待値は,

156+25616+356(16)2+456(16)3++k56(16)k1+
と書き表せます。つまり,次の部分和Snの極限値です。Sn=156+25616+356(16)2+456(16)3++n56(16)n1
これは,目を凝らせば“等差×等比”の形ですので,なんだかんだでSn=65{1(16)n}n6n
と計算できます。従ってlimnSn=65です。

同様の計算を,他の場合でも続けていくと,以下のようにまとまります。

  1. 初めて1個目の目が出る期待値は1
  2. 1個の目が出ていて,そのあとに初めて2個めの目が出る期待値は65
  3. 2個の目が出ていて,そのあとに初めて3個めの目が出る期待値は32
  4. 3個の目が出ていて,そのあとに初めて4個めの目が出る期待値は2
  5. 4個の目が出ていて,そのあとに初めて5個めの目が出る期待値は3
  6. 5個の目が出ていて,そのあとに初めて6個めの目が出る期待値は6

というわけでこれらを足せば望みの解答が出せ,

1+65+32+2+3+6=14.7

となり,問題の答えは14.7回であることが言えました。

ちなみにこの解答の類似は, 数学ガール/乱択アルゴリズム (数学ガールシリーズ 4)(Amazon) の第5章にもあります。【幸せの階段】を昇っており,明快かつ軽やかな進行で問題を解いています。(宣伝)

直接計算したい!

“和の期待値は期待値の和”なんて使いたくないよ!という場合は,次のようにしてゴリゴリ計算しましょう。

さいころをn回投げてn+1回目に初めて6種類の目がそろう確率をpnとしますと,n1のとき,pn=5C55n(5C44n(5C33n(5C22n(5C11n))))6n
です。ちなみに代入すればp1=p2=p3=p4=0, p5=5324=6!66ですね。

pnを変形すれば,pn=(56)n5(23)n+10(12)n10(13)n+5(16)n
です。このとき求める期待値Eは,E=n=1(n+1)pn
です。後はこれを直接計算してやればよいですね。以下の計算結果を使います。

計算を楽に行うために

0<r<1のとき,n=1(n+1)rn=1(1r)21

これを使えば,E=n=1(n+1)pn=n=1(n+1){(56)n5(23)n+10(12)n10(13)n+5(16)n}=(361)5(91)+10(41)10(941)+5(36251)=14.7
と計算でき,確かに先ほど求めた14.7という数字と一致していますね。

まとめ

クーポンコレクター問題の具体的な状況について考えていきました。

直接計算の節では,場合の数から“真面目に”攻めるという方法を取りましたが,この方法でクーポンコレクター問題を解いている解説記事が(僕の検索力では)見つからなかったため,1つの解法として実用性があるかどうかはともかく,面白いのではないかと感じています。

ここまでご覧いただきありがとうございます。

追記

コメントにおける とが さんから面白い解法をいただきました。そちらの議論も合わせてご覧ください!

投稿日:20201119
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

ぱるち
ぱるち
142
26531
数学屋さんをしています。代数,数論系に興味があり,今は楕円曲線と戯れています。Mathlogは現実逃避用という噂もあります。@f_d00123

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. この記事でやること
  2. 和の期待値と期待値の和
  3. 直接計算したい!
  4. まとめ