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

看板 FATE_GO
作者 yeez ( )
時間 2022-12-09 02:15:56
留言 24則留言 (19推 0噓 5→)

2022/12/10 11:32 更新:已排除了溢位問題,抽數設定無限大應該都可以正常運行 ----------------------寫在前面---------------------- 1. 本文含有大量數學算式,範圍涵蓋條件機率、二項式定理等數學觀念。 若對數學有強烈過敏或排斥反應,建議直接END看結論或是左轉離開。 2. 本文不含任何統計學觀念,完全只有機率。 3. 本文不考慮任何因抽卡玄學帶來的機率變動影響,也一概不討論玄學對機率之影響。 4. 文末提供之工作表在使用上很簡單,完全不知道這篇在講什麼也可以快樂(?)使用。 5. 本文忽略保底影響。 6. 本文為了計算方便,會將抽卡行為理想化,請自行斟酌下修實際機率。 ---------------------------------------------------- 大家好,無聊的數學家又來荼毒......分享一些有趣東西給大家了 這件事情本來是一個單純想法 「單抽中PU五星的機率是0.008,那是否1000抽就可期望抽中8隻PU五星?」 「實際上,1000抽中8隻以上PU五星的機率有多少?」 對於一個無課/福袋課玩家而言,石頭是有限的。 一年從營運收到的免費石,可能是幾百~一千多抽的程度。 那麼無課玩家就會想知道: 以下問題將會一一解答,並提供計算機,大家可以自己算。 (不想看數學的可以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 展開得出。 可是單純展開仍然無法減少我們的工作, 所以到了本文另一主角:二項式定理出場。 ---------------------------------------------------- 二項式定理 礙於數學公式不好在批踢踢上打出來,直接引用wiki截圖: https://i.imgur.com/zmirw96.png
Ref: Wiki二項式定理條目 https://reurl.cc/10keeG 簡單用上面的例子類推 (0.8+0.2)^3 = *(0.8)^3*(0.2)^0 + *(0.8)^2*(0.2)^1 + *(0.8)^1*(0.2)^2 + *(0.8)^0*(0.2)^3 = *(0.8)^3 + *(0.8)^2*(0.2) + *(0.8)*(0.2)^2 + *(0.2)^3 = *P(三紅) + *P(兩紅) + *P(一紅) + *P(無紅) = 1。 那麼我們把中獎機率換成代數,當抽1000次時,就會變成 (不中+中)^1000 = *P(不中) + *P(中一個) + *P(中兩個) + *P(中三個) + ... + *P(全中) 至此,準備工作完成。 ---------------------------------------------------- 回到原本問題 1000抽中8隻以上PU五星的機率有多少? 此機率可以看成 P(1000抽中8隻以上PU五星) = 1 - P(1000抽中0~7隻PU五星) = 1 - [ *P(不中) + *P(中一個) + *P(中兩個) + ... + *P(中七個)] 至於 *P(中N個) 怎麼算? 假如1000抽中1個,表示另外999次都不中 機率就是 *(抽中)^1*(不中)^999 中二就是 *(抽中)^2*(不中)^998 中三就是 *(抽中)^3*(不中)^997 ... 以此類推。 完整算式列一下 P(1000抽中8隻以上PU五星) = 1 - P(1000抽中0~7隻PU五星) = 1 - [ *P(不中) + *P(中一個) + *P(中兩個) + *P(中三個) + *P(中四個) + *P(中五個) + *P(中六個) + *P(中七個)] = 1 - [ *(抽中)^0*(不中)^1000 + *(抽中)^1*(不中)^999 + *(抽中)^2*(不中)^998 + *(抽中)^3*(不中)^997 + *(抽中)^4*(不中)^996 + *(抽中)^5*(不中)^995 + *(抽中)^6*(不中)^994 + *(抽中)^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. 此表格可套用於其他遊戲卡池,如果該卡池的機率公正的話。 -- 咳咳,放假心情不錯那來回應一下好了,怕真的有人相信 在討論機率的時候,我們是不討論抽樣方式的 因為不同的抽樣方式會導致不同的機率結果 擅自想像賭場的出貨規則,也是許多賭徒賠得血本無歸的主要原因 沒有人會在絕望的情況下還加注,大輸特輸 賭徒會大輸特輸的原因,往往是因為他自以為掌握了賭場的潛規則 福本伸行的<賭博墮天錄>有很傳神的描述,推薦大家看看 (就是那個給開司一瓶啤酒的漫畫續篇啦,不清楚有沒有真人版) 所以上面那個說法除非拿拆包程式碼證據出來,不然我就當在雲了 ---- 而且這個說法如果為真,那就恐怖了 因為這邏輯等價於抽後不放回的機率模型 每一抽的機率都在跳動,絕對不是表定的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)的著作,就會知道好玩的數學其實也是很多的
※ 批踢踢實業坊(ptt.cc), 來自: 49.216.235.245 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/FATE_GO/M.1670523358.A.9D1.html

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

eret: 推 12/09 08:38

naideath: 推 12/09 09:35

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

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

howerd11: 300抽沒有抽到當期五星 超級難巴拉巴拉 12/09 09:36

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

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

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

noddle: 推 12/09 11:21

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

allbs: 昨晚不就好狐 12/09 11:54

roy047: 推專業文 12/09 12:21

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

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

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

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

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

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

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

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

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

zipigi: .. 12/10 15:45

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

您可能感興趣