目次
はじめに
ルール
勝率について
シミュレーションしてみた
#はじめに
先日リリースされ大反響を集めているあるソーシャルゲームがあります。
それがカイジ闇の黙示録です。
あの名作マンガカイジのソシャゲでしかも小室哲哉氏が手掛けているBGMが随所にあり、LUNA SEAのボーカルで有名な河村隆一氏の主題歌もあり、カイジやアカギのCVでおなじみ、プロ雀士でもある萩原聖人氏が様々な名言をゲーム内随所で喋ってくれる超豪華なゲームとなっております。私もリリースからプレーしていますが楽しすぎて時間を溶かしてしまっています。
ゲーム自体はたくさんのミニゲームで構成されているのですが、その中の一つにトランプゲームのHIGH&LOWがあります1。飲み会で定番のゲームなのでご存じの方も多いかもしれません。
#ルール
このゲームにおいてのルールは非常にシンプルです。
まず初めに賭け金を設定します。ゲームを始めた際に所持しているゲーム内通貨は200000エーンですが、一回当たりに賭け金として設定できる金額は$ { 2000 + (lv-1) * 3000 } $エーンとなっています。lv1なら5000エーン、lv100なら305000エーンです。
次に、利根川がランダムでカードを提示してきた後に、自分が持っているカードがそれよりも上か下か選ぶように強いられます。ここで、カードの強さは強い順にA>K>Q>J>10>9>8>7>6>5>4>3>2とし、カードの中にジョーカーは入っていないものとします。(1000回以上試行してきて一枚も出てこなかったので多分入っていないはず)
この選択が当たった場合、見事右上の現在の金額が倍になります。また、その後にダブルアップをするかの選択をさせられます。
ここで、ダブルアップをすると賭け金が倍になり、またゲームをすることになります。ここで「いいえ」を選択すると現在の金額をそのまま受け取ることができます。
しかし、ここで負けてしまうと、賭け金が没収されます。ここで注意すべき点が一つあります。
没収されるのは賭け金です。先ほど、ダブルアップをすると賭け金が倍になると書きました。
例えば、5000エーンを最初に賭け一回目のゲームに勝った場合、二回目のゲームには自分が倍の10000エーンを賭けたということになります。
もしもここで二回目のゲームに負けた場合、没収されるのは初めに賭けた5000エーンではなく、二回目に賭けた10000エーンです。したがって自分の所持金は195000エーンではなく190000エーンとなります2。
ダブルアップは最大6回行うことができ、すべてに勝率すると元々の賭け金の128倍をゲットすることができます。一方で6回目に負けてしまうと最初の賭け金の64倍が失われてしまいます。
#勝率について
HIGH & LOWゲームの勝率について考察します。自分は最も有利な選択をするものとします3。
利根川がAまたは2を提示した場合...自分は確実にA以下または2以上を所持しているため、52枚のトランプのうちから利根川が出した1枚を除く51枚のうち、Aまたは2の残り3枚を除く48枚を選べば勝てるので勝率は $ \frac{48}{51} $となります。
利根川がKまたは3を提示した場合...自分が負けるor引き分けるのは
- 利根川がKの場合...自分がA, Kを所持している場合
- 利根川が3の場合...自分が3, 2を所持している場合
となるため、それぞれ7枚となります。したがって勝率は $ \frac{44}{51} $ となります。
以下、同様に考察していくと2~Aにおける勝率は
利根川の手 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | J | Q | K | A |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
勝率 | $ \frac{48}{51} $ | $ \frac{44}{51} $ | $ \frac{40}{51} $ | $ \frac{36}{51} $ | $ \frac{32}{51} $ | $ \frac{28}{51} $ | $ \frac{24}{51} $ | $ \frac{28}{51} $ | $ \frac{32}{51} $ | $ \frac{36}{51} $ | $ \frac{40}{51} $ | $ \frac{44}{51} $ | $ \frac{48}{51} $ |
となります。利根川が8を出した場合は勝率が5割を切ってしまうのでめんどくさいです。
全ての組み合わせが出る確率は同様に確からしいので、全体の勝率は
\left\{ \left( \frac{48}{51} + \frac{44}{51} + \frac{40}{51} + \frac{36}{51} + \frac{32}{51} + \frac{28}{51} \right)*2 + \frac{24}{51} \right\} = 0.7239819004524887... \fallingdotseq 0.724 ...A
となり、**約72.4%**だとわかりました。
ただし、これは引き分けを考えた時のケースなのですが、実際にやってみると引き分けの場合には再試行することになるため、引き分けの場合を考察する必要がないことに気づきます。従って各ケースにおける勝率は
利根川の手 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | J | Q | K | A |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
勝率 | $ 1 $ | $ \frac{11}{12} $ | $ \frac{5}{6} $ | $ \frac{3}{4} $ | $ \frac{2}{3} $ | $ \frac{7}{12} $ | $ \frac{1}{2} $ | $ \frac{7}{12} $ | $ \frac{2}{3} $ | $ \frac{3}{4} $ | $ \frac{5}{6} $ | $ \frac{11}{12} $ | $ 1 $ |
となります。この場合全体の勝率は
\left\{ \left( 1 + \frac{11}{12} + \frac{5}{6} + \frac{3}{4} + \frac{2}{3} + \frac{7}{12} \right)*2 + \frac{1}{2} \right\} = 0.7692307692307693 ... \fallingdotseq 0.769...B
となり、引き分けを考慮しない場合勝率は約76.9%、9回に7回は勝てるということがわかります。
なお、この確率Bを用いた場合の1回の賭けの期待値(負けるまでor7連勝する)は、
bet\{(1 - b) (-1 - 2b - 4b^2 -8b^3 - 16b^4 -32b^5 -64b^6 )+128b^7 \}
で計算でき、$ bet = 302000 $の場合、期待値としては3649693.8961282573円となり、元値の約12倍と計算できます。
#シミュレーションしてみた
ということでここからが本題です。条件は以下の通りに設定します。
初期所持金...0(実際にはプラスの状態からスタートしますが、考察のため0からとします。)
賭け金...302000(レベル100時の上限です)
勝利次は常にダブルアップをする。
この条件のもと、最初に100万回試行を行ってみます。
ソースコード
用いたソースコードは以下の通りです。
import random
def act():
#A...14とする
tonegawa = random.choice(range(2, 15))
you = random.choice(range(2, 15))
if(you in [2, 14]):
return True
else:
if((you > 7 and you > tonegawa) or (you <= 7 and you < tonegawa)):
return True
elif((you > 7 and you < tonegawa) or (you <= 7 and you > tonegawa)):
return False
else:
act()
bet = 302000 #lv100
now, count = 0, 0
res = []
wl = 0
for _ in range(1000000):
if(act()):
wl += 1
count += 1
if(count == 7):
now += bet * 2 ** count
count = 0
else:
wl -= 1
now -= bet * 2 ** count
count = 0
res.append(now)
多分あってるはず((追記)間違ったので訂正しました)。count
には連勝数、res
には各ステップごとの所持金を入れています。
実行して横軸にステップ数、縦軸に所持金の推移をプロットしたグラフは以下の通りです。
ほぼ線形に上昇していき、100万回終えた時点での金額は509989212000エーン、およそ5100億エーンになることがわかりました。
ただ実際には線形にはならないということが容易に考えられます。ズームして10000回の試行までについて次は見ていきます。
実際にはかなり増えて微増して...を繰り返していることがわかります。
ですが、これはあくまでもシミュレーションであり、実際のルールに則して再度考慮するとこのようになります。
実はこのゲーム、上のスクリーンショットを見ていただいても分かると思うんですけどエーンの所持上限が2147483647であり、それよりも上にはいきません。ちなみに表示上そうなっているとかではなく、負けたら普通に減ります。
というわけで自分が最近ハマっていたソシャゲについて考察しました。ハマっていたというのは上限値に達して飽きちゃったんですよね...。int
をll
とかにアプデで変えてくれたらいいなあと思って締めさせていただきます。