# Slot 平均、變異數相關 ## 目的 - 我們的目標是得到一款遊戲中,每一次 Spin 的 - 平均 ➔ 就是 RTP - 變異數 / 標準差 ➔ 本篇討論,想要得到整款遊戲 ( Overall ) 的數據 - 以往討論變異數的方式皆只考慮單線,而非 Line Game 的全線或 Way Game 的全盤。 - 和實際遊玩情況可能不符 - 說不定和實際情況相似? 如果是就太好了 - 我們現在有的工具是可以得到 Overall、BG 和 FG 模擬的變異數。但在 Overall 中,FG 占比極小,因此模擬次數會影響數值準確性。改進方式是可以 - 增加模擬次數 ➔ 增加的次數和時間成本高度相關,但要是 - 將遊戲做分解 ➔ 本篇討論 ## Model 1 - 最簡單的狀況 <!-- ::: spoiler 內文 --> - 考慮一款簡單的 Slot 遊戲,其組成為 - Base Game - Free Game - **且 Base Game 和 Free Game 互相獨立** ➔ 不會帶任何資訊進入 FG - 其中 Base Game 和 Free Game 的觸發機率、平均數及變異數分別為 ||Prob|Mean|Var.| |-|-|-|-| |Base Game|$p_B=1$|$\mu_B$|$\sigma_B^2$| |Free Game|$p_F$|$\mu_F$|$\sigma_F^2$| - 這邊的 $\mu_B$ 和 $\mu_F$ 可以從模型中得到 <img src="https://hackmd.io/_uploads/SydQrzCZp.png" alt="drawing" style="width:600px;" /> - 但是變異數 $\sigma_B^2$ 和 $\sigma_F^2$ 卻很難(有可能?)從模型中得到,目前只有兩種方式: - 窮舉 - 精確的理論值 - 蘊含時間成本 ➔ Way Game 約 6 秒/億次 - 模擬 - 估計值。 - 節省時間成本,非理論值。 - 變臉財富版的窮舉和模擬差異。可以看到在這款遊戲,10億場的模擬已和理論值非常接近。 | Base Game (96%) | Var. | Sample Num. | |:------------------ | -------- | --------------:| | Brute Force Method | 3.78915 | 16,240,716,800 | | Simulation | 3.78904 | 1,000,000,000 | | Rel. Err. | 0.00293% | -\- | - 其他? - 先不論用哪種方式,假設我們得到了上表所有參數,接下來要取得的就是 Overall 的參數。這邊稱 Overall 的平均為 $\mu_A$,變異數為 $\sigma_A^2$。他們可以由以下公式得到: \begin{split} \mu_A & = p_B\mu_B+p_F\mu_F \\ & \\ \sigma_A^2 & = p_B^2\sigma_B^2+p_F^2\sigma_F^2 \\ \end{split} <!-- ::: --> ## Model 2 - 不只一種 Free Game <!-- ::: spoiler 內文 --> - 當今天的遊戲稍微複雜一點,例如拿破崙中,不同 Scatter 觸發的 Free Game 對應的情況不相同,那麼只要稍微修改成 ||Prob|Mean|Var.| |-|-|-|-| |Base Game|$p_0=1$|$\mu_0$|$\sigma_0^2$| |第一種 FG|$p_1$|$\mu_1$|$\sigma_1^2$| |第二種 FG|$p_2$|$\mu_2$|$\sigma_2^2$| 那麼此時 Overall 相對應的參數只要改成 \begin{split} \mu_A & = p_0\mu_0+p_1\mu_1+p_2\mu_2 \\ & \\ \sigma_A^2 & = p_0^2\sigma_0^2+p_1^2\sigma_1^2+p_2^2\sigma_2^2 \\ \end{split} - 假如今天有想單純看所有 Free Game 中的平均和標準差時,要注意對機率的處理。例如 \begin{split} \mu_F & = (p_1\mu_1+p_2\mu_2)/(p_1+p_2) \\ & \\ \sigma_A^2 & = (p_1^2\sigma_1^2+p_2^2\sigma_2^2)/(p_1+p_2)^2 \\ \end{split} <!-- ::: --> ## Model 3 - 簡單的 Free Game 拆解 <!-- ::: spoiler 內文 --> - 前兩個 Model 中,Free Game 的參數皆考慮**整場** FG。 - 假設有一款遊戲的 Free Game 沒有 Retrigger 且場次為 10 場。 - 當我們要進行 $10^8$ 場 FG 的模擬,相當於要模擬的 Spin 次數足足有 $$10^8\cdot10=10^9$$ - 當我們要進行窮舉,比如說每一把有 $10^9$ 種情況,那麼考慮整個 FG 的可能性果甚至有 $$(10^9)^{10}=10^{90}$$ - 在現有的程式架構下,兩者的時間成本差距甚大。 - 我們可以利用獨立性將 Free Game 做拆解。 - 變臉 ➔ 任兩次 Spin 相互獨立 ➔ 考慮兩個隨機變數 - $N:$ 該場 Free Game 的總場數。我們記 - 平均為 $\mu_N$ - 變異數為 $\sigma_N^2$ - $X:$ 單一次 Spin 的倍率。我們記 - 平均為 $\mu_X$ - 變異數為 $\sigma_X^2$ - **這兩個隨機變數互相獨立** - 那麼整場 Free Game 的倍率之隨機變數即為 $NX$。此時 Free Game 的平均及變異數即可由以下得到 \begin{split} \mu_F & = \mu_N\mu_X \\ & \\ \sigma_F^2 & = (\sigma_N^2+\mu_N^2)(\sigma_X^2+\mu_X^2)-\mu_N^2\mu_X^2 \\ \end{split} - 我們觀察上述需要的參數,分別有: - $\mu_N$ ➔ 模型能算 - $\sigma_N^2$ ➔ 模型能算 - $\mu_X$ ➔ 模型能算 - $\sigma_X^2$ ➔ 模型沒有 ➔ 靠模擬 - 可以發現唯一需要靠模擬的參數是 FG 中 **單一次 Spin** 的變異數。這時候的模擬次數就能大幅降低。 <!-- ::: --> ## Model 4 - 複雜的 Free Game 拆解 <!-- ::: spoiler 內文 --> - 經典例子:黑熊 - 黑熊在 Free Game 中有 32 種狀態。FG 的平均 $\mu_F$ 模型上就有,問題出在 FG 的變異數 $\sigma_F^2$ 如何得到? 1. 直接模擬整場 FG 2. 想辦法拆解然後計算 - 從獨立性下手,我們可以分別計算/模擬得到每種狀態的參數。 - 我們考慮以下隨機變數: - 64 種情況 ➔ ($2^5:$Lock) x ($2:$Retrigger) - 各情況在 Free Game 出現場次: $N_i$。其中記 - 平均為 $\mu_{N_i}$ - 變異數為 $\sigma_{N_i}^2$ - 各種情況下的單把 Spin 得分倍率: $X_i$。其中記 - 平均為 $\mu_{X_i}$ - 變異數為 $\sigma_{X_i}^2$ - 這邊任意 $X_i$ 和 $N_j$ 互相獨立,但 $X_i$ 和 $X_j$ 並**不獨立!!** - 那麼整場 FG 得分倍率的隨機變數即為 $\displaystyle\sum_{i=1}^{64}N_iX_i$。其變異數 $$ \sigma_F^2 = \sum_{i=1}^{64}\mbox{Var}(N_iX_i)+\sum_{i\neq j}\mbox{Cov}(N_iX_i,N_jX_j) $$ - 左邊那一項在 Model 3 處理過,問題就在右邊的共變異數。剛好這邊的 $X_i$ 和 $N_j$ 互相獨立,我們可以將共變異數化簡: $$ \mbox{Cov}(N_iX_i,N_jX_j) = \mu_{X_i}\mu_{X_j}E[N_iN_j]-\mu_{N_i}\mu_{N_j}\mu_{X_i}\mu_{X_j}$$ - 將式子整理後可以得到 $$ \sigma_F^2 = \sum_{i=1}^{64}\left[(\sigma_{N_i}^2+\mu_{N_i}^2)(\sigma_{X_i}^2+\mu_{X_i}^2)-\mu_{N_i}^2\mu_{X_i}^2\right]+\sum_{i\neq j}\left\{\mu_{X_i}\mu_{X_j}E[N_iN_j]-\mu_{N_i}\mu_{N_j}\mu_{X_i}\mu_{X_j}\right\} $$ - 這邊統整一下需要的參數: 1. 隨機變數 $N_i$ - 目前是用[程式](https://hackmd.io/@snR94XwJQqeRTAlRwWwAqA/S1GtOs1za)取得; - 能得到 $\mu_{N_i}$、$\sigma_{N_i}^2$ 和 $E[N_iN_j]$ 的**精確值**。 1. $\mu_{X_i}$ ➔ 模型能算 1. $\sigma_{X_i}^2$ ➔ 要靠模擬 - 因此我們需要的模擬數值僅有**不同 State 中單一次 Spin 的變異數**。 <!-- ::: --> ## 小結 - 想得到一款遊戲的精確平均值 ( RTP ) 已經不是簡單的事情。 - 常見的 Line Game、Way Game,以及 Free Game Retrigger 和各種特色,都有相對應的處理方式。 - 也有部分不少見的特色如消除,存在無法計算精確平均值的特色。在這種情況下目前只有兩種選擇: 1. 模擬得到估計值 1. 窮舉得到精確值 - 當一款遊戲的 RTP 是由精確地計算而來,和他是利用模擬得到的估計值而來,兩者間到底差在哪裡?當然,遊戲進行調整時,有一套模型可以使用則會相當的順利,但這也是建立在模擬或窮舉的時間成本較大。如果可以壓低時間成本... - 相同的,一款遊戲每一場的變異數也會有相似的討論,並且變異數的計算並不是現在我們擁有的技術。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up