frommathimportcombdefdraw_at_least_one(copies:int,deck_size:int=60,draws:int=7)->float:"""Opening hand에 specific card 포함 확률."""miss=comb(deck_size-copies,draws)/comb(deck_size,draws)return1-miss# 매 4-of in 60: ~40% to see in opening handprint(draw_at_least_one(4))# 0.3994
Archetype Classifier (LLM-assisted)
importanthropicclient=anthropic.Anthropic()defclassify_archetype(decklist:list[str])->str:msg=client.messages.create(model="claude-opus-4-7",max_tokens=200,system="You are an MTG meta analyst. Classify decks as Aggro/Midrange/Control/Combo/Tempo.",messages=[{"role":"user","content":"\n".join(decklist)}],)returnmsg.content[0].text
defpick_ev(card:str,picks_so_far:list[str],wheels:dict[str,float])->float:"""Card power × signal × wheel probability."""base=card_power(card)in_color_bonus=1.3ifshares_color(card,picks_so_far)else0.8wheel_pen=1.0-wheels.get(card,0)*0.2# 매 wheel 가능성 → 후순위returnbase*in_color_bonus*wheel_pen
매 결정 기준
상황
Approach
Mobile onboarding
12-card (Snap) or 20-card (Pocket)
Competitive depth
60-card constructed
Social play
Commander 100-card singleton
Roguelike
Procedural deckbuild (StS)
Beginner
Pre-constructed starter
기본값: 60-card constructed with 4-of legality + 15-card sideboard.
언제: meta classification, sideboard suggestion, decklist parse → archetype, beginner coaching.
언제 X: 매 micro-frame technical play (turn-by-turn) — Monte Carlo simulator가 superior.
❌ 안티패턴
Random pile: 매 win condition 없는 60장 collection.
Curve cliff: 매 mana curve의 4+ slot 비대 → opening hand brick.
No interaction: 매 pure goldfish deck — 상대 plan 무시.