週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

blackJackの超当然な定石をPythonで検証。


f:id:aisakakun:20170212221349j:plain

blackJackとはアニメの方ではなく、カードを使うゲームです。

 

ルールに関する説明は最低限だけ..

・J, Q, Kは10扱い

・カードが二枚配られる

・相手のカードは一枚が公開、

もう一枚は伏せカードになっていて見えない状態

・自分は手札の合計が22以上になると負けが確定

・手札21が最も強い

・自分の手札が弱いor相手に勝てないと思った場合、カードを新たに引くことができる。

・相手は17以上になるまでカードを引き続ける

 大体こんな感じです。

このblackJackにおいて、もはや当たり前になっている考えとして、

 

相手の伏せカードは10であると考える。

 

というものがあります。

まぁ当然合計枚数52枚(ジョーカーはない)の内16枚が10であり、他は4枚ずつしかないので一対一でやっている場合、圧倒的に10が出る確率が高いです

例えば相手の公開カードが10である場合、

その伏せカードは10とすると、

合計は20である。

従って、自分の手札の合計が今15だから、

このまま引かなければ確実に負ける。

故にもう一枚引く。

 

という具合です。

 

本当に10が出ると想定していいのか? (当然だが)

それを検証します。

プログラムは若干粗いですがこんな感じ。

gistf57086420c9124fb85303a74343314b0

 

で、試しにinputしてみる。

究極の状態

自分: 10,10

相手: 10,?

の場合、?が10である確率は?

f:id:aisakakun:20170212220838p:plain

0.2653061224489796

他は一律:0.08163265306122448

3.25倍の確率

 

圧倒的、10にとってこれだけ不利な条件でもこれ。

blackJack初心者の皆さん。

定石には従いましょう。笑

次はもっと柔軟なパターンに対して適用できるように改良を加えます。