PTT推薦

[閒聊] 抽數期望值計算機

看板FATE_GO標題[閒聊] 抽數期望值計算機作者
yeez
( )
時間推噓19 推:19 噓:0 →:5

2022/12/10 11:32 更新:已排除了溢位問題,抽數設定無限大應該都可以正常運行

----------------------寫在前面----------------------

1. 本文含有大量數學算式,範圍涵蓋條件機率、二項式定理等數學觀念。
若對數學有強烈過敏或排斥反應,建議直接END看結論或是左轉離開
2. 本文不含任何統計學觀念,完全只有機率。
3. 本文不考慮任何因抽卡玄學帶來的機率變動影響,也一概不討論玄學對機率之影響。4. 文末提供之工作表在使用上很簡單,完全不知道這篇在講什麼也可以快樂(?)使用。
5. 本文忽略保底影響。
6. 本文為了計算方便,會將抽卡行為理想化,請自行斟酌下修實際機率。

----------------------------------------------------

大家好,無聊的數學家又來荼毒......分享一些有趣東西給大家了
這件事情本來是一個單純想法
「單抽中PU五星的機率是0.008,那是否1000抽就可期望抽中8隻PU五星?」
「實際上,1000抽中8隻以上PU五星的機率有多少?

對於一個無課/福袋課玩家而言,石頭是有限的。
一年從營運收到的免費石,可能是幾百~一千多抽的程度。
那麼無課玩家就會想知道:
1. 假如我在一年內想抽到X個五星,用現有的抽數,是否太樂觀了?
2. 我總共有Y抽,在目前的卡池抽到我想要的角色的機率有多少?
3. 一年過去了,我抽到了Z個五星,算是哪一個大洲的人?
以下問題將會一一解答,並提供計算機,大家可以自己算。
(不想看數學的可以END了)

----------------------------------------------------

一切問題從簡單的範例開始。
假如我們用一個紅白球箱子來模擬卡池。
箱子內有4個紅球,1個白球
抽中紅球算中獎(真容易中獎),抽完球放回箱中。

那麼抽中紅球機率=4/5=0.8抽中白球機率=1/5=0.2

假如只抽1次,抽中紅球機率自然就是0.8
抽2次的話就開始有趣了,根據結果,會有四種情形:

P(紅紅) = 0.8*0.8 = 0.64
P() = 0.8*0.2 = 0.16
P() = 0.2*0.8 = 0.16
P(白白) = 0.2*0.2 = 0.04

當然 0.64 + 0.16 + 0.16 + 0.04 = 1。
抽中兩紅的機率,是P(紅紅) = 0.64。
抽中兩白的機率,是P(白白) = 0.04。
一紅一白的機率,是P()+P()=0.16+0.16=0.32。
由於抽中順序不影響其最終機率,所以通常會合併看待。

----------------------------------------------------

讓我們用另一種觀點來看待此事。
下面是一個簡單的算式:

(0.8+0.2)^2

我們當然知道這個答案是1,因為0.8+0.2=1,
且1不管自乘幾次,答案都是1。
但是我們假如直接展開算式,就可以發現與上面的紅白球機率對應:

(0.8+0.2)^2
= 0.8*0.8 + 0.8*0.2 + 0.2*0.8 + 0.2*0.2 = 1。

而(0.8+0.2)^3的機率,也正好與抽樣三次的情況對應:

(0.8+0.2)^3
= 0.8*0.8*0.8 + 0.8*0.8*0.2 + 0.8*0.2*0.8 + 0.8*0.2*0.2
+ 0.2*0.8*0.8 + 0.2*0.8*0.2 + 0.2*0.2*0.8 + 0.2*0.2*0.2
= P(紅紅紅) + P(紅紅) + P() + P(白白)
+ P(紅紅) + P() + P(白白) + P(白白白)
= 1。

於此可以類推,抽1000次的機率分布可以由
(0.8+0.2)^1000
展開得出。

可是單純展開仍然無法減少我們的工作,
所以到了本文另一主角:二項式定理出場。

----------------------------------------------------

二項式定理

(x+y)^n 可以展開為 C(n,k)*x^k*y^(n-k) 的級數和。

礙於數學公式不好在批踢踢上打出來,直接引用wiki截圖:

https://i.imgur.com/zmirw96.png

圖 抽數期望值計算機

Ref: Wiki二項式定理條目
https://reurl.cc/10keeG

簡單用上面的例子類推
(0.8+0.2)^3
= C(3,0)*(0.8)^3*(0.2)^0
+ C(3,1)*(0.8)^2*(0.2)^1
+ C(3,2)*(0.8)^1*(0.2)^2
+ C(3,3)*(0.8)^0*(0.2)^3

= 1*(0.8)^3
+ 3*(0.8)^2*(0.2)
+ 3*(0.8)*(0.2)^2
+ 1*(0.2)^3

= 1*P(三紅) + 3*P(兩紅) + 3*P(一紅) + 1*P(無紅)

= 1。



那麼我們把中獎機率換成代數,當抽1000次時,就會變成
(不中+中)^1000
= C(1000,0)*P(不中) +
C(1000,1)*P(中一個) +
C(1000,2)*P(中兩個) +
C(1000,3)*P(中三個) +
... +
C(1000,1000)*P(全中)

至此,準備工作完成。

----------------------------------------------------

回到原本問題

1000抽中8隻以上PU五星的機率有多少?

此機率可以看成
P(1000抽中8隻以上PU五星)
= 1 - P(1000抽中0~7隻PU五星)
= 1 - [ C(1000,0)*P(不中) +
C(1000,1)*P(中一個) +
C(1000,2)*P(中兩個) +
... +
C(1000,7)*P(中七個)]

至於 C(1000,N)*P(中N個) 怎麼算?
假如1000抽中1個,表示另外999次都不中
機率就是 C(1000,1)*(抽中)^1*(不中)^999
中二就是 C(1000,2)*(抽中)^2*(不中)^998
中三就是 C(1000,3)*(抽中)^3*(不中)^997
...
以此類推。

完整算式列一下

P(1000抽中8隻以上PU五星)
= 1 - P(1000抽中0~7隻PU五星)
= 1 - [ C(1000,0)*P(不中) +
C(1000,1)*P(中一個) +
C(1000,2)*P(中兩個) +
C(1000,3)*P(中三個) +
C(1000,4)*P(中四個) +
C(1000,5)*P(中五個) +
C(1000,6)*P(中六個) +
C(1000,7)*P(中七個)]

= 1 - [ C(1000,0)*(抽中)^0*(不中)^1000 +
C(1000,1)*(抽中)^1*(不中)^999 +
C(1000,2)*(抽中)^2*(不中)^998 +
C(1000,3)*(抽中)^3*(不中)^997 +
C(1000,4)*(抽中)^4*(不中)^996 +
C(1000,5)*(抽中)^5*(不中)^995 +
C(1000,6)*(抽中)^6*(不中)^994 +
C(1000,7)*(抽中)^7*(不中)^993]

再把實際機率: 抽中=0.008不中=0.992 代入算式中
大功告成了,算式裡面已經沒有任何未知數了。
於是我們可以把以上過程編進Google工作表中,
然後填上中獎機率與抽數,得出想要的結果。

---------------END請回到這裡看結論---------------

於是乎,經由工作表的努力,得出的結果如下圖

https://i.imgur.com/8yQUp4g.png

圖 抽數期望值計算機

查表可以得知 P(1000抽中8隻以上PU五星) = 54.76%
也就是說如果你的運氣是排名前54.76%的玩家,
你在任何卡池加總丟1000抽,可以得到8隻以上的PU五星。
(一半以上的玩家可以期待,1000抽中8隻以上PU五星呢)
如果連抽歪五星也想計入呢?把中獎率從0.008調成0.01即可。

另外這個表格也可以計算單個卡池的期望值
假如你想抽奧伯龍池,準備了200抽,
想知道這樣抽中寶1~5的機率有多少
把機率設為0.008,抽數設為200即可。

工作表如下,請自行另存副本/下載取用。

https://reurl.cc/7jbRk9

另外我的公式有寫活,如果覺得中10隻太少想計算更多隻,
選取最後一行往右拖拉即可。

----------------------寫在最後----------------------

1. 此表格有理想化的地方,
在於一年內玩家能領的石頭不是一開始就能領到,而是依時間增加的。
所以途中抽到一半沒石頭的情況,本表無法顧及。
但是判斷單個卡池的期望值不受此影響,可以放心使用。

2. 此表格可套用於其他遊戲卡池,如果該卡池的機率公正的話。


--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.235.245 (臺灣)
PTT 網址
※ 編輯: yeez (49.216.235.245 臺灣), 12/09/2022 02:22:39

mindscold12/09 08:16推一個認真研究數學

eret12/09 08:38

naideath12/09 09:35

howerd1112/09 09:35反正還是會有傻X 說300抽保底不重要

howerd1112/09 09:35根本用不到的蠢話

howerd1112/09 09:36300抽沒有抽到當期五星 超級難巴拉巴拉

wcp5947812/09 10:21我只抽3~20連 300保是啥 能吃嗎

dderfken12/09 10:24傻的是你 他們只是知道自己的魔力不足

eric56712/09 11:16昨天看某實況主各種歪,還是有保底比較好

noddle12/09 11:21

Fates12/09 11:21推 不過歐洲人不在意這個的啦 他們比較cares玄學

allbs12/09 11:54昨晚不就好狐

roy04712/09 12:21推專業文

Luciel12/09 12:25推推,我也是這麼想的

Brownsugar1612/09 12:35推推 數學好文

tsining12/09 12:37快推免得人家以為我看不懂(指考數甲9.5分報到

simrays12/09 13:08自從看到巖窟王21單後,認清期望值終結是期望

jeffguoft12/09 14:32手遊抽卡的機率是一段時間內出貨量/總量,外加函式調整

jeffguoft12/09 14:33固定時間間隔去抽,或許才能得到你的結論

咳咳,放假心情不錯那來回應一下好了,怕真的有人相信 在討論機率的時候,我們是

不討論抽樣方式

的 因為不同的抽樣方式會導致不同的機率結果 擅自想像賭場的出貨規則,也是許多賭徒賠得血本無歸的主要原因 沒有人會在絕望的情況下還加注,大輸特輸 賭徒會大輸特輸的原因,往往是因為他自以為掌握了賭場的潛規則 福本伸行的<賭博墮天錄>有很傳神的描述,推薦大家看看 (就是那個給開司一瓶啤酒的漫畫續篇啦,不清楚有沒有真人版) 所以上面那個說法除非拿拆包程式碼證據出來,不然我就當在雲了 ---- 而且這個說法如果為真,那就恐怖了 因為這邏輯等價於

抽後不放回

的機率模型 每一抽的機率都在跳動,絕對不是表定的0.8% (基本上如果有程式這樣寫,可以試著告告看遊戲公司XD) 然後取後不放回的卡池程式碼寫起來,比取後放回還麻煩 取後放回其實就直接套個多層亂數就好了,一條式子解決 取後不放回要構建一個鴿籠卡池,還要一段時間洗掉重建一個鴿籠卡池 大量的資料更迭也會造成系統多餘負擔,真的有工程師這樣寫,我倒想看看 ---- 另外一點是,就算此說法屬實,玩家也沒有較佳策略 因為營運仍然有許多方式可以解決此問題 首先你要保證,卡池的時間區段,是很現實可以操作的大小 如果時間區段1毫秒,那時間內玩家抽卡次數太少, 就算卡池是鴿籠,帶來的機率波動也小 1000個裡面有8個中獎但只有一個人抽,正好跟機率一樣 如果時間區段1個月,那所有人都在同一區段內抽卡 營運如果做個巨大鴿籠,比如1000億裡面有8億中獎 那就算1個月過去了有10萬個人中獎,對鴿籠的機率影響也是微乎其微 (8億-10萬)/(1000億-10萬) ~ 0.8% 一樣沒問題 所以假如營運調低換池時間週期,或是調高池的總量 都可以解決問題 用二十一點的說法,第一種就是玩一把就換一副牌,第二種就是用一百副牌的卡堆 都能有效的遏止玩家算牌,<決戰二十一點>也是老電影了啊 ---- 最後用個小小機率問題,說明何謂抽樣方法影響機率,來做個結論吧 這是一題經典題:

在一個圓內任意選一條弦,

這條弦的弦長,大於這個圓的內接等邊三角形的邊長的機率是多少?

這個問題根據不同的取樣方法,至少有三種以上的答案: 1. 在圓周上隨機選兩點,此兩點連成弦,機率是1/3。 2. 在圓內畫一條直徑,在直徑上選一個點畫垂直於直徑的線為弦,機率是1/2。 3. 在圓內選一點,畫出此點與圓心連線的垂直線為弦,機率是1/4。 這是著名的<伯特蘭悖論>,可以參見Wiki:

https://reurl.cc/6Lb4y6

如果看過葛登能(Martin Gardner)的著作,就會知道好玩的數學其實也是很多的

※ 編輯: yeez (125.229.0.174 臺灣), 12/09/2022 20:22:45

Mark4030412/09 21:21樓上那個jeff是外掛仔 發言一直都怪怪的

Katoru12/09 21:21可惡,快推!!不然會被人發現我統計學被當(x)

※ 編輯: yeez (125.229.0.174 臺灣), 12/10/2022 11:36:01

zipigi12/10 15:45抱歉我就是400抽0五星的非洲人,保底對我來說還是需要的.

zipigi12/10 15:45..

SSIKLO12/11 10:40推一個,簡單易懂