望ましい手札が得られる確率
よくある初手の計算
複雑な条件にも適用できるようにしたい
数え上げ
簡単な条件の場合
シミュレータによる統計値
複雑な条件
簡単な条件で既知の問題を増やしておくあんも.icon
実験と食い違いがないかを見るため
https://note.com/maddogmtg/n/nade82044f352
望ましい状況について定義しておく
ピン刺しと最大枚数
https://x.com/kanmi_sub/status/1955852323433128123
確認がしたい
【遊戯王マスターデュエル】デッキ構築が下手な人へ【初心者向け解説】|おつ。
https://x.com/chaos_jar/status/1976086169038565411
https://x.com/chaos_jar/status/1976115222638370877
手数の算出?
https://note.com/kaseki_mtg/n/nfe00af6a1002
プログラム例がないので作ってみるあんも.icon
JavaScriptで書くとポチポチできておもしろそうあんも.icon
https://exw-md.hatenablog.com/entry/2025/07/13/182844
確認するあんも.icon
超幾何分布
hypergeometric distribution
https://x.com/himajin_magnet/status/1976126001026396338
https://yazirusis.com/yugioh_prob/index.html
ゲームルールのパラメータ定義
code:jl
deck_size #デッキ枚数
initial_draw #初期手札枚数
mulligan_rule #マリガンの方法
draw_per_turn #ターンごとのドロー枚数
max_turns #何ターン目まで観測するか
target_cards #目標カード
desired_conditions #望む条件
デッキの初期化
目標カードを決めて、その他のカードとまとめてデッキにする
リストのデータ型?
識別可能なデータ型であればよい
柔軟性の高いString型が無難
code:jl
function build_deck()
deck = String[]
# 目標カードを追加
append!(deck, fill("Alouette", 3))
# 残りのカードを追加
others = 40 - length(deck)
for i in 1:others
push!(deck, "Other-" * string(i))
end
return deck
end
山上から初期手札を取る