見出し画像

だれでもポケカプログラミング その2 マリガンの確率②

マリガンになる確率をシミュレーションするプログラム、3分で作るぞって話の続き。前回の記事はこれ。

前回書いたコードは下記の5行でしたな。

デッキ = ['たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ',
        'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他',
        'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他',
        'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他',
        'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他',
        'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他']
手札 = []

#デッキをシャッフル
random.shuffle(デッキ)

#手札を7枚引く
for i in range(7):
  手札.append(デッキ.pop())

これで手札7枚引くシミュレーションはできてますんで、これを100万回繰り返して何回マリガンが発生するか集計してみます。

for i in range(1000000)

これ1行を追加すると100万回繰り返すになります。

マリガン回数カウント = 0

マリガンが発生したらマリガン回数カウントをプラス1していきましょう。

if 'たねポケ' not in 手札:
  マリガン回数カウント += 1

手札にたねポケがなかったらマリガン回数カウントをプラス1するというコードです。if文については詳しくは下記を参照。
https://www.google.com/search?q=python+if+not+in

#シャッフルに必要なもの
import random

試行回数 = 1000000
マリガン回数カウント = 0

for i in range(試行回数):

  デッキ = ['たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ', 'たねポケ',
          'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他',
          'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他',
          'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他',
          'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他',
          'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他', 'その他']
  手札 = []

  #デッキをシャッフル
  random.shuffle(デッキ)

  #手札を7枚引く
  for i in range(7):
    手札.append(デッキ.pop())

  #たねポケが1枚もない場合マリガンカウント
  if 'たねポケ' not in 手札:
    マリガン回数カウント += 1

マリガンになる確率 = マリガン回数カウント / 試行回数
print("試行回数\t" + str(試行回数))
print("マリガン回数カウント\t" + str(マリガン回数カウント))
print("マリガンになる確率\t" + '{:.2%}'.format(マリガンになる確率))

試行回数 1000000
マリガン回数カウント 259382
マリガンになる確率 25.94%

ちょっと修正しましたがこんな感じ。100万回まわしたら25.9万回マリガンになったので、マリガンになる確率は25.9%!理論値は25.86%なのでほぼほぼ一致!

3分で完成しましたな~!次回はサイドに入る確率なんかを調べてみますかね。

コメント機能がないので何かあればXのDMへどうぞ。

次の記事


この記事が気に入ったらサポートをしてみませんか?