PTT推薦

Re: [聊天] 試算200天井實裝後 期望抽數的改變

看板PCReDive標題Re: [聊天] 試算200天井實裝後 期望抽數的改變作者
arrenwu
(不是綿芽的錯)
時間推噓51 推:51 噓:0 →:22

※ 引述《phoenix286 (糰子大家族)》之銘言:
: 本來也想算碎片抽的機率分布...
: 但是獎勵碎片有五種結果(0,1,5,20,40) 就不是簡單的二項分布了
: 有人知道要怎麼算嗎?
:
: 推 smart0eddie: 不是啊 你可以算出每抽碎片期望值 這樣就能算抽數了? 03/26 00:32: 這裡分兩種層面來看
: 1. 單純看碎片抽的期望抽數
: 簡單的估算是 期望抽數 = 145/每抽期望碎片
: 但是直接相除 好像還少考慮了什麼
你們的直覺其實是對的,真的要說少的話,只是少引了一個定理
Elementary renewal theorem
https://en.wikipedia.org/wiki/Renewal_theory#Elementary_renewal_theorem

不過我想這個也不是我們感興趣的結果。
大家比較感興趣的是下面這個復刻池的期望抽數

: 2. 整個復刻池的期望抽數
: 這個需要結合兩個相依的機率分布 又更麻煩了
: → mathtsai: 回樓上 你要算上 抽or鍊成 這個要手算也太困難 03/26 00:35


現在的問題:如果我想把我老婆聖誕克莉絲從這次復刻池抽出來,
需要抽數的期望值是多少?

喔對了,這是個假設性問題。因為去年我婆卡池一開我就把她抽出來了

復刻池可以看成兩種獨立的池 (1) 抽人的池 (2) 抽碎片的池

抽人的池拿邊很簡單,跟一般PU池差不多,只是機率變成 p = 0.00175

碎片這邊比較複雜,先讓我們看有碎片的獎項:

獎項 碎片 機率
一等獎 40 p1 = 0.005
二等獎 20 p2 = 0.01
三等獎 5 p3 = 0.05
四等獎 1 p4 = 0.10

好,然後呢,讓我們定義兩個隨機變數 X,Y:

X = 抽人的池,抽出克莉絲需要的抽數
Y = 抽碎片的池,抽到的碎片量達到145的抽數


最後呢,定義復刻池抽出克莉絲需要的抽數 Z:

Z = min(X,Y)

反正就是哪個池先達到弄出一個克莉絲,就是我們需要的抽數

而上面那個問題其實就是在問 E[Z]

這邊呢,我跟大家介紹一個計算非負整數隨機變數期望值的公式

E[Z] = Σ P(Z > n)
n=0

這個很方便喔 算這種抽抽問題也滿實用

然後呢:
P(Z > n) = P(min(X,Y) > n)

= P( X > n and Y > n)

= P(X > n) P( Y > n ) (抽人池和抽碎片池是獨立池)

X部分很好算,而且只有 n<300 的時候大於零 :
P(X > n) = (1-p)^n n = 0~299
= 0 otherwise

所以:


E[Z] = Σ P(Z > n)
n=0

= Σ P(X > n) P(Y > n)
n=0

299 <----- 不用算到無窮囉 耶!
= Σ (1-p)^n P(Y > n)
n=0

那 P(Y > n) 是多少呢?

我們定義四個隨機變數 N1(n),N2(n),N4(n),N4(n):
N1(n): 抽碎片池的前n抽中,一等獎的個數
N2(n): 抽碎片池的前n抽中,二等獎的個數
N3(n): 抽碎片池的前n抽中,三等獎的個數
N4(n): 抽碎片池的前n抽中,四等獎的個數

P(Y>n) = P(碎片池前n抽碎片量不足以合成克莉絲)

= P( 40*N1(n)+20*N2(n)+5*N3(n)+1*N4(n) ≦ 144 )

我想板上佑樹普遍水準應該都不錯,下面這個自己應該算得出來

For any non-negative k1,k2,k3,k4 and k1+k2+k3+k4 <= n

P( N1(n)=k1, N2(n)=k2, N3(n)=k3 , N4(n)=k4)

= n!/(k1!k2!k3!k4!(n-k1-k2-k3-k4)!) *
p1^k1 p2^k2 p3^k3 p4^k4 (1-p1-p2-p3-p4)^(n-k1-k2-k3-k4)

而 P( 40*N1(n)+20*N2(n)+10*N3(n)+1*N4(n) ≦ 144 )

= Σ P(N1(n)=k1, N2(n)=k2, N3(n)=k3 , N4(n)=k4)
(k1,k2,k3,k4) in A(n)

where A(n) = {(k1,k2,k3,k4) | k1,k2,k3,k4 >=0, k1+k2+k3+k4 <= n,
40*k1+20*k2+5*k3+1*k4 ≦ 144 }

所以這樣就可以算 E[Z] 了

我算出來是 E[Z] = 167.62

--
https://pbs.twimg.com/media/EwSsY_jVEAkCEgJ.jpg

圖 試算200天井實裝後 期望抽數的改變
角卷綿芽80萬訂閱紀念靠枕開始販賣! (開放購買至 4/19 下午 4:59)
購買連結: https://hololive.booth.pm/items/2808989

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 98.234.190.206 (美國)
PTT 網址

c87111111603/26 11:12恩恩 跟我想的差不多 就是這樣吧

fisheryu051403/26 11:14恩,我也這麼認為

JeffMnO403/26 11:18那就記168,公主連結一路發!

skbb255303/26 11:21不對啊 聖誕克總不能碎片合成

CorkiN03/26 11:22嗯嗯跟我想的一樣

OscarShih03/26 11:23我不是早就這樣子說了嗎

skbb255303/26 11:24不過Re0復刻角就可以這樣算了

frank7961803/26 11:44我沒走錯版吧XD

passioncraig03/26 11:47嗯嗯跟我想的一樣

v80098200403/26 12:01我的答案跟小當家一樣

chun4703/26 12:03嗯嗯 差不多就是這樣

pq534692903/26 12:04跟我想的一樣

gn00506603/26 12:04恩恩

phoenix28603/26 12:10三等獎是五片 應該是5×N3

你說得沒錯 我程式裡面寫對 上面打錯

smart0eddie03/26 12:10嗯嗯跟我想的一樣

pearnidca03/26 12:12https://i.imgur.com/siFBtTD.jpg

圖 試算200天井實裝後 期望抽數的改變

sky7971703/26 12:12嗯嗯嗯 就是這樣

g959141003/26 12:15大哥 我是文組 看無= =

phoenix28603/26 12:21P(min(X,Y) > n) P( X > n and Y > n)

phoenix28603/26 12:21這行推導沒看懂 能解釋一下嗎?

phoenix28603/26 12:22P(min(X,Y) > n) = P( X > n and Y > n)

min(X,Y) 這個量就是取 X,Y 中比較小的值 所以 min(X,Y) > n 就等同於在說 X,Y 都大於 n

globalspirit03/26 12:27嗯,跟我想得一樣

aegis9108603/26 12:41感謝解析

v8686106203/26 12:50奇怪的知識增加了

qaz050303/26 13:05你講的我都知道,可是我每次都保底是什麼回事

roc07403/26 13:09原來如此,嗯嗯!

whiwhiwhi03/26 13:10你算了這麼多 可是聖誕克總不能合成耶(X

reaturn03/26 13:14日版不能合啊 XD

whiwhiwhi03/26 13:15台版也不能啊

whiwhiwhi03/26 13:15我說聖誕克總(X

喔 我其實不知道哪些可以哪些不行XD 不能碎片合成的話其實就跟一般PU池類似

whiwhiwhi03/26 13:23台版就到泳真步 從萬華開始就不行

dustlike03/26 13:33可是瑞凡 你婆已經不能人體鍊成惹

cjacky102603/26 13:57跟我想的一樣呢

mathtsai03/26 13:58用程式跑就好惹

mathtsai03/26 14:00而且程式跑出來和你算的不一樣@@

我用蒙地卡羅跑出來的結果跟上面一樣喔 import random from numba import njit, prange p = 0.00175; p1 = 0.005; p2 = 0.01; p3 = 0.05; p4 = 0.1; P1 = 0 + p1; P2 = P1 + p2; P3 = P2 + p3; P4 = P3 + p4; @njit(parallel=True) def montecarlo(nSample): result = np.zeros(nSample); for i in prange(nSample): nDraw = 0; nShard = 0; while (nDraw < 300): nDraw +=1; if (random.random()<p): break pN = random.random(); if (pN < P1): nShard += 40; elif (pN<P2): nShard += 20; elif (pN<P3): nShard += 5; elif (pN < P4): nShard += 1; if (nShard >= 145): break result[i] = nDraw; return result N = 10000000 print(sum(montecarlo(N))/N)

andrewhanks03/26 14:06我到底看了三...

OppOops03/26 14:21定義的部分寫成"花費"的抽數好像比較容易懂

OppOops03/26 14:23因為抽可以無限次, > n 的時候停下來, 事實上是反著加總

JJJZZs03/26 14:34算錯了 你沒算到我是非洲人這個參數

whiwhiwhi03/26 14:40對我來說只是300變200而已

xkiller190003/26 14:54學術論壇

shin3003/26 14:58恩恩 跟我算得差不多

SatoTakeru03/26 15:13公主連結是一款真正的數學遊戲

js85060403/26 15:16你有考慮血統這個參數嗎

louis8282803/26 15:25嗯嗯 跟我驗算的結果一樣

wfleowang03/26 15:33這篇讓我想到以前修機率的時光......

schula03/26 15:53果然還是要做有興趣的事情才會比較有趣啊lol

r90170021603/26 16:13除了供殺小 我不知道要講什麼

mathtsai03/26 16:18寫法差不多 但是我是用C++

mathtsai03/26 16:20不過算出來怎麼差這麼多@@

mathtsai03/26 16:21上一篇h大也算出和我一樣的答案

harryron903/26 16:27他這個結果對的啊 0.0175 天井300

harryron903/26 16:28 0.00175

Incredible9903/26 16:32跟我算的一樣啊

mathtsai03/26 16:35喔喔 他p取0.0175 那應該沒錯了XDD

mathtsai03/26 16:38我改參數之後得到167.08 原po計算應該無誤

SuperSg03/26 17:26嗯嗯嗯,我的意思就是這樣

nutta03/26 17:40喔喔對耶就是這樣

Lupin9703/26 19:04你忘了遊戲裡的佑樹是失智仔,而我現在也差不多=.=

OscarShih03/26 19:35讀書有那麼認真就好惹 (

felixr012303/26 19:37賺賺賺

epidemic00003/26 21:02嗯嗯 就跟我想的一樣

phoenix28603/27 00:05你這個算出來是理論值嗎?還是抽樣結果?(不大懂蒙地

phoenix28603/27 00:05卡羅

這篇文章打的是理論值呀 萌帝卡蘿是模擬。我的code就貼在下面推文那邊

tw1503/27 00:05我本來也是跟你想的一樣 但是我現在失智了大概你說得沒錯

phoenix28603/27 00:57我是說那個167.62

那個是理論值啊 就上面文章寫的方式算出來的

※ 編輯: arrenwu (98.234.190.206 美國), 03/27/2021 03:59:39

HYDE198603/27 08:08嗯嗯 跟我算的一樣

Sechslee03/27 15:19好 看不懂

jasonwung03/27 17:08嗯嗯 原來如此

ilovedaodao03/28 11:01我覺得抽就對了,算這麼多結果還是保底結果旁邊朋友

ilovedaodao03/28 11:0110抽中會吐血

kevin03089903/28 23:35怎麼感覺以後可能在某間學校的期中考看到XD

ikusou17403/28 23:46不錯給推