遊戲命中率設計:用馬可夫鏈消除連續 Miss,同時鎖定 80% 期望值
在游戲中 80% 命中率,15 次攻擊出現連續 2 Miss
這是典型的真隨機(True Randomness)與心理期望的落差:
-
單次 Miss 概率: $q = 1 - 0.8 = 0.2$(20%)。
-
連續 2 次 Miss 概率: $0.2 \times 0.2 = 0.04$(4%)。
而在前面文章我們已經計算出在 15 次獨立事件中,出現「至少一次連續 2 Miss」的概率 ≈ 38.97%
這意味著玩家平均每 2~3 場戰鬥,就會遇到一次連續 2 Miss。加上心理學上的負面偏見(Negativity Bias)與賭徒謬誤(Gambler's Fallacy),玩家會覺得「明明 80% 怎麼老是連續失手」。
而「馬可夫鏈」的核心特性是:下一次事件發生的概率,只取決於當前的狀態(State)。
1. 馬可夫鏈如何解決問題?
我們可以設計一個 2 狀態的馬可夫鏈:
-
狀態 $S_0$(上一發 Hits/正常狀態): 命中率設定為 $p_0$。
-
狀態 $S_1$(上一發 Miss/補償狀態): 命中率提升為 $p_1$(例如直接調高至 $100\%$,徹底封死連續 2 Miss)。
p0 (85%)
┌─────────┐
▼ │
[ S0: Normal ] ──(1-p0)──► [ S1: Missed ]
▲ │
└────────── p1 (100%) ─────────┘
2. 馬可夫鏈最強大的依據:完美的「宏觀平衡」
如果直接寫死 if (last == miss) next_hit_rate = 100%,雖然解決了體驗問題,但會拉高整體的平均命中率(例如衝到 83% 以上),導致遊戲戰術平衡破壞。
而馬可夫鏈的數學依據在於穩態分佈(Steady-state Distribution)
我們可以透過矩陣精確計算,在強制消除連續 Miss 的同時,讓長期的整體平均命中率嚴格維持在 80%。
設長期平均命中率為 $\pi_H$,其公式為:
$$\pi_H = \frac{p_1}{p_1 + 1 - p_0}$$
如果我們希望:
-
完全杜絕連續 2 Miss:將上一發 Miss 後的命中率設為 $p_1 = 1.0$ (100%)。
-
總體平均命中率保持 80%:令 $\pi_H = 0.80$。
代入公式:
$$0.80 = \frac{1.0}{1.0 + 1 - p_0} \implies p_0 = 0.75$$
結論:
只要將「正常狀態 hit 命中率」稍微下調至 75%,而「Miss 後的下一次命中率」設為 100%:
-
玩家在戰鬥中100% 不會遇到連續 2 次 Miss。
-
15 次攻擊下來,整體的平均命中率依然精確等於 80%。