サイド落ち計算機
python3 で動きます。
deck には メノコマシラロンゲ 2026 S1のリストを入れている
ロジックの詳細は「ポケカのサイド落ちを丁寧に計算する」にあります。
code:python
from math import comb
deck = {
"Marnie's Impidimp": 3,
"Marnie's Morgrem": 2,
"Marnie's Grimmsnarl ex": 2,
'Munkidori': 4,
'Snorunt': 2,
'Froslass': 2,
'Bloodmoon Ursaluna ex': 1,
'Iron Bundle': 1,
'Maractus': 1,
'Shaymin': 1,
'Secret Box': 1,
'Buddy-Buddy Poffin': 2,
'Nest Ball': 1,
'Ultra Ball': 1,
'Earthen Vessel': 1,
'Rare Candy': 1,
'Night Stretcher': 2,
'Super Rod': 1,
'Counter Catcher': 2,
"Boss's Orders": 2,
"Lillie's Conviction": 4,
"Arven": 4,
'Iono': 2,
"Professor's Research": 2,
'Spikemuth Gym': 2,
'Artazon': 1,
'Technical Machine: Evolution': 2,
'Technical Machine: Devolution': 1,
'Air Balloon': 1,
'D_ENERGY': 8
}
HAND = 7
SIDE = 6
N = sum(deck.values())
print(f"Deck size: {N}")
# たねポケ
seed_cards = [
"Marnie's Impidimp", "Munkidori", "Snorunt",
'Bloodmoon Ursaluna ex', 'Iron Bundle', 'Maractus', 'Shaymin'
]
HIT = sum(deckc for c in seed_cards)
# 初手に種ポケが1枚以上ある確率
P_E = 1 - comb(N - HIT, HAND) / comb(N, HAND)
print(f"P(E): {P_E}")
def marginal_distribution(card):
n_card = deckcard
dist = []
for k in range(min(n_card, SIDE) + 1):
total_prob = 0
for h in range(min(n_card, HAND) + 1):
if h + k > n_card:
continue
# 手札に h 枚引く枚数組み合わせ数
ways_hand_card = comb(n_card, h)
# 残り山札から残り手札を埋める組み合わせ数
remaining_hand = HAND - h
remaining_deck = N - n_card
ways_hand_other = comb(remaining_deck, remaining_hand)
# 初手に種ポケがゼロの場合の組み合わせ数
# ただし残りの手札位枚数が山札から種ポケモンと対象カード枚数-手札に引いた h 枚数を引いた枚数以下のときは 0 になる
# ただし対象カードが種ポケで h != 0 の場合は除外する
remaining_n_cards = n_card - h
miss = comb(N - HIT - remaining_n_cards, remaining_hand) if (remaining_hand <= N - HIT - remaining_n_cards) and not(card in seed_cards and h != 0) else 0
# サイドに k 枚落ちる組み合わせ数
ways_side = comb(n_card - h, k) * comb(remaining_deck - remaining_hand, SIDE - k)
total_prob += ways_hand_card * (ways_hand_other - miss) * ways_side
dist.append(total_prob)
total = sum(dist)
if total == 0:
return 1.0 if i == 0 else 0.0 for i in range(len(dist))
return p / total for p in dist
# 結果出力
for card in deck:
print(f"{card}: {marginal_distribution(card)}")
# Snorunt: 0.8116706446399299, 0.18017576156494108, 0.008153593795128988
# Night Stretcher: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
出力例
P(E) は手札に種ポケモンが1枚以上含まれている確率で、このサイド落ち計算は条件付き確率として実装したつもり
code:output
Deck size: 60
P(E): 0.8371559499762459
Marnie's Impidimp: 0.7284368184717449, 0.24804568756479592, 0.02296270436599383, 0.0005547895974654076
Marnie's Morgrem: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Marnie's Grimmsnarl ex: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Munkidori: 0.6521291368769474, 0.30273297472388316, 0.04298482784758348, 0.0021241627767394663, 2.889777484645115e-05
Snorunt: 0.8116706446399299, 0.18017576156494108, 0.008153593795128988
Froslass: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Bloodmoon Ursaluna ex: 0.9021249398099792, 0.09787506019002079
Iron Bundle: 0.9021249398099792, 0.09787506019002079
Maractus: 0.9021249398099792, 0.09787506019002079
Shaymin: 0.9021249398099792, 0.09787506019002079
Secret Box: 0.8988605881638941, 0.10113941183610581
Buddy-Buddy Poffin: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Nest Ball: 0.8988605881638941, 0.10113941183610581
Ultra Ball: 0.8988605881638941, 0.10113941183610581
Earthen Vessel: 0.8988605881638941, 0.10113941183610581
Rare Candy: 0.8988605881638941, 0.10113941183610581
Night Stretcher: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Super Rod: 0.8988605881638941, 0.10113941183610581
Counter Catcher: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Boss's Orders: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Lillie's Conviction: 0.6450171203431505, 0.3076988209837874, 0.044961331840218804, 0.0022905335703982876, 3.219326244497238e-05
Arven: 0.6450171203431505, 0.3076988209837874, 0.044961331840218804, 0.0022905335703982876, 3.219326244497238e-05
Iono: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Professor's Research: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Spikemuth Gym: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Artazon: 0.8988605881638941, 0.10113941183610581
Technical Machine: Evolution: 0.8063793045810498, 0.18495158586119526, 0.00866910955775491
Technical Machine: Devolution: 0.8988605881638941, 0.10113941183610581
Air Balloon: 0.8988605881638941, 0.10113941183610581
D_ENERGY: 0.4017868810886605, 0.4166015301045503, 0.1541011664431174, 0.025509610071241053, 0.0019386237573157652, 6.158919545427421e-05, 5.993396606923926e-07
シュッとパースして↓
table:Name
Name\枚数 0枚 1枚 2枚 3枚 4枚 5枚 6枚
Marnie's Impidimp 72.84% 24.80% 2.30% 0.06%
Marnie's Morgrem 80.64% 18.50% 0.87%
Marnie's Grimmsnarl ex 80.64% 18.50% 0.87%
Munkidori 65.21% 30.27% 4.30% 0.21% 0.00%
Snorunt 81.17% 18.02% 0.82%
Froslass 80.64% 18.50% 0.87%
Bloodmoon Ursaluna ex 90.21% 9.79%
Iron Bundle 90.21% 9.79%
Maractus 90.21% 9.79%
Shaymin 90.21% 9.79%
Secret Box 89.89% 10.11%
Buddy-Buddy Poffin 80.64% 18.50% 0.87%
Nest Ball 89.89% 10.11%
Ultra Ball 89.89% 10.11%
Earthen Vessel 89.89% 10.11%
Rare Candy 89.89% 10.11%
Night Stretcher 80.64% 18.50% 0.87%
Super Rod 89.89% 10.11%
Counter Catcher 80.64% 18.50% 0.87%
Boss's Orders 80.64% 18.50% 0.87%
Lillie's Conviction 64.50% 30.77% 4.50% 0.23% 0.00%
Arven 64.50% 30.77% 4.50% 0.23% 0.00%
Iono 80.64% 18.50% 0.87%
Professor's Research 80.64% 18.50% 0.87%
Spikemuth Gym 80.64% 18.50% 0.87%
Artazon 89.89% 10.11%
Technical Machine: Evolution 80.64% 18.50% 0.87%
Technical Machine: Devolution 89.89% 10.11%
Air Balloon 89.89% 10.11%
D_ENERGY 40.18% 41.66% 15.41% 2.55% 0.19% 0.01% 0.00%