回答
[id:lethevert:20070118:p2]
数学の才能がないので、上手く数式化できないけれど、次のようなところまで考えた。
とりあえず、M=4のケースで考える。つまりQueueが4本になるわけだけれど、これを、Queue1本での確率でput、の確率でgetというように読み替える。
が、N回目の試行が完了したときのQueueの長さがiである確率を表すとする。また、が、N回目の試行でputが終わった後のQueueの長さがiである確率を表すとする。
すると、次のような漸化式で記述できる。
さらに、かつであることを考えて、N回目の試行でgetが空になる確率はということになる。
さて、この関数がどういう概形になるのかを計算してみると、の値をで計算してみた。
分母 | の係数の分子 | の係数の分子 | の係数の分子 | の係数の分子 | ||
0 | 100% | 1 | 1 | |||
1 | 81% | 16 | 13 | 3 | 0 | 0 |
2 | 70% | 256 | 178 | 69 | 9 | 0 |
3 | 62% | 4096 | 2521 | 1251 | 297 | 27 |
4 | 56% | 65536 | 36526 | 20964 | 6804 | 1161 |
5 | 51% | 1048576 | 537730 | 339630 | 134415 | 32265 |
6 | 48% | 16777216 | 8009380 | 5412735 | 2459835 | 738774 |
7 | 45% | 268435456 | 120360145 | 85534995 | 43052877 | 15188607 |
8 | 42% | 4294967296 | 1821286870 | 1345589016 | 732699576 | 292045068 |
9 | 40% | 68719476736 | 27713496358 | 21117849498 | 12239898012 | 5370440292 |
ということで、getが空になる確率はだんだん減少して、Queueに含まれる要素数の期待値はだんだん大きくなるわけだけれど、シンプルな数式にまとめる方法はよく分からない。