2013年8月31日土曜日

BlackJackシミュレータ作ってみた

ブラックジャックのそれぞれの手の場合にどれくらいの期待値で
勝てるのかを調べるために、Scalaでモンテカルロシミュレーションプログラムを作ってみた。


  • プレイヤーの手札が8~20の時に対して、ディーラーのアップカードが2~Aのそれぞれに対して、HIT/STAND/DOUBLEDOWNを500000回繰り返したときの期待値を求める。
  • カードは無限にあるものとする(カウンティングの要素は含まない)
  • 乱数は擬似乱数を使用する
  • サレンダーは考慮しない(アーリーサレンダーとレイトサレンダーを分けるのがしんどいので)
  • ディーラーはソフト17スタンドとする

結果



 こんな感じになった。表の各数値はHIT / STAND / DOUBLE DOWN をずっと繰り返したときの期待値です。各セル内の最大値となるものが、最適戦略となる。


他のサイトとの比較

 このあたりに掲載されているベーシックストラテジーと比較すると、一部微妙に違いがあるが、このあたりは乱数の性能の限界なのかもしれない。




作成したプログラム


GitHubに置いています。