Re: [聊天] 試算200天井實裝後 期望抽數的改變
※ 引述《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

角卷綿芽80萬訂閱紀念靠枕開始販賣! (開放購買至 4/19 下午 4:59)
購買連結: https://hololive.booth.pm/items/2808989
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 98.234.190.206 (美國)
※ 文章網址: https://www.ptt.cc/bbs/PCReDive/M.1616728289.A.3E2.html
推
03/26 11:12,
4年前
, 1F
03/26 11:12, 1F
推
03/26 11:14,
4年前
, 2F
03/26 11:14, 2F
推
03/26 11:18,
4年前
, 3F
03/26 11:18, 3F
推
03/26 11:21,
4年前
, 4F
03/26 11:21, 4F
推
03/26 11:22,
4年前
, 5F
03/26 11:22, 5F
→
03/26 11:23,
4年前
, 6F
03/26 11:23, 6F
推
03/26 11:24,
4年前
, 7F
03/26 11:24, 7F
推
03/26 11:44,
4年前
, 8F
03/26 11:44, 8F
推
03/26 11:47,
4年前
, 9F
03/26 11:47, 9F
推
03/26 12:01,
4年前
, 10F
03/26 12:01, 10F
推
03/26 12:03,
4年前
, 11F
03/26 12:03, 11F
推
03/26 12:04,
4年前
, 12F
03/26 12:04, 12F
推
03/26 12:04,
4年前
, 13F
03/26 12:04, 13F
推
03/26 12:10,
4年前
, 14F
03/26 12:10, 14F
你說得沒錯 我程式裡面寫對 上面打錯
推
03/26 12:10,
4年前
, 15F
03/26 12:10, 15F
推
03/26 12:12,
4年前
, 16F
03/26 12:12, 16F

推
03/26 12:12,
4年前
, 17F
03/26 12:12, 17F
推
03/26 12:15,
4年前
, 18F
03/26 12:15, 18F
推
03/26 12:21,
4年前
, 19F
03/26 12:21, 19F
→
03/26 12:21,
4年前
, 20F
03/26 12:21, 20F
→
03/26 12:22,
4年前
, 21F
03/26 12:22, 21F
min(X,Y) 這個量就是取 X,Y 中比較小的值
所以 min(X,Y) > n 就等同於在說 X,Y 都大於 n
推
03/26 12:27,
4年前
, 22F
03/26 12:27, 22F
推
03/26 12:41,
4年前
, 23F
03/26 12:41, 23F
推
03/26 12:50,
4年前
, 24F
03/26 12:50, 24F
推
03/26 13:05,
4年前
, 25F
03/26 13:05, 25F
推
03/26 13:09,
4年前
, 26F
03/26 13:09, 26F
→
03/26 13:10,
4年前
, 27F
03/26 13:10, 27F
推
03/26 13:14,
4年前
, 28F
03/26 13:14, 28F
→
03/26 13:15,
4年前
, 29F
03/26 13:15, 29F
→
03/26 13:15,
4年前
, 30F
03/26 13:15, 30F
喔 我其實不知道哪些可以哪些不行XD 不能碎片合成的話其實就跟一般PU池類似
→
03/26 13:23,
4年前
, 31F
03/26 13:23, 31F
推
03/26 13:33,
4年前
, 32F
03/26 13:33, 32F
推
03/26 13:57,
4年前
, 33F
03/26 13:57, 33F
推
03/26 13:58,
4年前
, 34F
03/26 13:58, 34F
→
03/26 14:00,
4年前
, 35F
03/26 14:00, 35F
我用蒙地卡羅跑出來的結果跟上面一樣喔
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)
推
03/26 14:06,
4年前
, 36F
03/26 14:06, 36F
推
03/26 14:21,
4年前
, 37F
03/26 14:21, 37F
→
03/26 14:23,
4年前
, 38F
03/26 14:23, 38F
推
03/26 14:34,
4年前
, 39F
03/26 14:34, 39F
→
03/26 14:40,
4年前
, 40F
03/26 14:40, 40F
推
03/26 14:54,
4年前
, 41F
03/26 14:54, 41F
推
03/26 14:58,
4年前
, 42F
03/26 14:58, 42F
推
03/26 15:13,
4年前
, 43F
03/26 15:13, 43F
推
03/26 15:16,
4年前
, 44F
03/26 15:16, 44F
推
03/26 15:25,
4年前
, 45F
03/26 15:25, 45F
推
03/26 15:33,
4年前
, 46F
03/26 15:33, 46F
→
03/26 15:53,
4年前
, 47F
03/26 15:53, 47F
推
03/26 16:13,
4年前
, 48F
03/26 16:13, 48F
推
03/26 16:18,
4年前
, 49F
03/26 16:18, 49F
→
03/26 16:20,
4年前
, 50F
03/26 16:20, 50F
→
03/26 16:21,
4年前
, 51F
03/26 16:21, 51F
→
03/26 16:27,
4年前
, 52F
03/26 16:27, 52F
→
03/26 16:28,
4年前
, 53F
03/26 16:28, 53F
推
03/26 16:32,
4年前
, 54F
03/26 16:32, 54F
推
03/26 16:35,
4年前
, 55F
03/26 16:35, 55F
→
03/26 16:38,
4年前
, 56F
03/26 16:38, 56F
推
03/26 17:26,
4年前
, 57F
03/26 17:26, 57F
推
03/26 17:40,
4年前
, 58F
03/26 17:40, 58F
推
03/26 19:04,
4年前
, 59F
03/26 19:04, 59F
→
03/26 19:35,
4年前
, 60F
03/26 19:35, 60F
→
03/26 19:37,
4年前
, 61F
03/26 19:37, 61F
推
03/26 21:02,
4年前
, 62F
03/26 21:02, 62F
推
03/27 00:05,
4年前
, 63F
03/27 00:05, 63F
→
03/27 00:05,
4年前
, 64F
03/27 00:05, 64F
這篇文章打的是理論值呀
萌帝卡蘿是模擬。我的code就貼在下面推文那邊
推
03/27 00:05,
4年前
, 65F
03/27 00:05, 65F
推
03/27 00:57,
4年前
, 66F
03/27 00:57, 66F
那個是理論值啊 就上面文章寫的方式算出來的
※ 編輯: arrenwu (98.234.190.206 美國), 03/27/2021 03:59:39
→
03/27 08:08,
4年前
, 67F
03/27 08:08, 67F
推
03/27 15:19,
4年前
, 68F
03/27 15:19, 68F
推
03/27 17:08,
4年前
, 69F
03/27 17:08, 69F
→
03/28 11:01,
4年前
, 70F
03/28 11:01, 70F
→
03/28 11:01,
4年前
, 71F
03/28 11:01, 71F
推
03/28 23:35,
4年前
, 72F
03/28 23:35, 72F
推
03/28 23:46,
4年前
, 73F
03/28 23:46, 73F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):