Home 計算機に戻る

BO3の計算のしかた、数学的証明など

このような表を考えてみます。

	有利不利 |  式神 | コンエル |
	妖怪     |  50%  |   40%    |
	ドラゴン |  40%  |   60%    |
	

自分が妖怪を投げた時、相手が式神を投げると勝率は50%、コンエルを投げると40%。

自分がドラゴンを投げた時、相手が式神を投げると勝率は40%、コンエルを投げると60%、という表になっています。

まず妖怪と式神がぶつかったとします。ここで勝った場合、残ったドラゴンで式神かコンエルのどちらかに勝てば勝利となります。

この場合の勝率は、相手がドラゴンに対して2連勝する確率は60%*40%で24%なので、100-24=76%の確率で勝利できます。

一戦目、妖怪が式神に負けた場合、相手のコンエルに対して妖怪とドラゴンで2連勝しなければ勝てません。

この場合の勝率は、40%*60%で24%になります

妖怪が式神に勝てる確率は50%なので、50%で勝つと76%で勝利、50%で負けると24%で勝利なので、トータルの勝率は50%になります。

ここで注意して欲しいのは、1戦目が終わった後は「両デッキで勝つ」か「1デッキでどちらかに勝つ」かのどちらかになり、両デッキで勝つ場合投げ順は関係なく一つのデッキに対してどちらのデッキでも勝たなければなりませんし、勝った後に一つのデッキしか選べない場合選択の余地はありません。

1戦目が終わった後は何をどの順番で投げても勝率には影響しないということになります。

実際には、最初に勝ちやすい方を投げて相手のデッキの内容を知りながら勝つことで、次の相対的に弱いデッキでも勝ちやすくなるという情報戦の要素も加えると、勝ちやすい方から投げたほうが良いということになりますが、残念ながらその要素はこの表、このプログラムには含まれていません。

同じように計算していきます。自分が妖怪、相手がコンエルの場合を計算すると、勝率40%で、勝った場合勝率76% 負けた場合勝率20%です。40%*76%+60%*20%でトータルの勝率は42.4%です。

自分がドラゴン、相手が式神の場合、勝率40%で、勝った場合は勝率70%、負けた場合24%。40%*70%+60%*24%で勝率42.4%です。

自分がドラゴン、相手がコンエルの場合、勝率60%で、勝った場合勝率70%、負けた場合勝率20% 60%*70%+40%*20%で勝率50%です。

先に投げたのがどちらかによって勝率の表を作るとこのようになります。

	投げ順勝率 | 式神  | コンエル |
	妖怪       |  50%  |  42.4%   |
	ドラゴン   | 42.4% |   50%    |
	

自分が最初に妖怪を投げ、相手が最初に式神を投げた時、トータルの勝率は50%、自分が最初に妖怪を投げ、相手が最初にコンエルを投げた時、トータルの勝率は42.4%・・・という表です。

勝率に影響するのは最初に投げたものだけで、その後は何をどう投げても勝率には影響しません。

結果として、このような対象形になり、右上と左下、左上と右下の勝率は同じになります。これはどのような場合でもこの形になります。これは数式で計算すると証明できますので、それについて後で書きます。

この表の形を見れば、自分がどっちを投げても、相手がどっちを投げるかによって勝率が変わるだけで、有効な戦略はなく、運の勝負になるということになるかと思います。

情報戦の要素を加味すれば、最初に勝ちやすい方を投げて相手のデッキの内容を知りつつ勝ったほうが良いことになります。負けると相手のデッキはもう出てこないので情報戦で不利になってしまいます。

その思考を読んで裏をかくことも出来るかもしれません。しかし、情報戦の要素をなくしてデッキごとの有利不利だけで見ると、投げ順で勝率を上げる方法はないことになります。

それでは数式で証明しようと思います。自分のデッキをuとd 相手のデッキをlとrとし、uとlが戦ったときの勝率をul...とします。表はこのようになります。

		有利不利 |  l    |   r   |
		u        |  ul   |   ur  |
		d        |  dl   |   dr  |
	

最初にuとrが戦ったときのトータルの勝率はこのようになります。

ur * (1.0 - (1.0 - dl) * (1.0 - dr)) + (1.0-ur) * (ul * dl) = dl*ul + dl*ur - dl*ul*ur + ur*dr - dl*ur*dr

最初にdとlが戦ったときの勝率はこのようになります。

dl * (1.0 - (1.0 - ul) * (1.0 - ur)) + (1.0-dl) * (ur * dr) = ur*dr + dl*ur - dl*dr*ur + dl*ul - dl*ur*ul

uとrが最初に戦ったときととdとlの時が同じであることを示すために、引き算します。

dl*ul + dl*ur - dl*ul*ur + ur*dr - dl*ur*dr - (ur*dr + dl*ur - dl*dr*ur + dl*ul - dl*ur*ul) = 0

引いてゼロになるので、最初にuとrが戦ったときと、dとlが戦ったときの勝率が同じということがわかりました。

同じようにして、uとlが戦ったときと、dとrが戦ったときが同じであることも証明できます。