作者yeez ( )
看板FATE_GO
标题[闲聊] 抽数期望值计算机
时间Fri Dec 9 02:15:56 2022
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/VnQPWlM.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.cc), 来自: 49.216.235.245 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/FATE_GO/M.1670523358.A.9D1.html
1F:推 mindscold: 推一个认真研究数学 12/09 08:16
2F:推 eret: 推 12/09 08:38
3F:推 naideath: 推 12/09 09:35
4F:推 howerd11: 反正还是会有傻X 说300抽保底不重要 12/09 09:35
5F:→ howerd11: 根本用不到的蠢话 12/09 09:35
6F:→ howerd11: 300抽没有抽到当期五星 超级难巴拉巴拉 12/09 09:36
7F:→ wcp59478: 我只抽3~20连 300保是啥 能吃吗 12/09 10:21
8F:推 dderfken: 傻的是你 他们只是知道自己的魔力不足 12/09 10:24
9F:推 eric567: 昨天看某实况主各种歪,还是有保底比较好 12/09 11:16
10F:推 noddle: 推 12/09 11:21
11F:推 Fates: 推 不过欧洲人不在意这个的啦 他们比较cares玄学 12/09 11:21
12F:推 allbs: 昨晚不就好狐 12/09 11:54
13F:推 roy047: 推专业文 12/09 12:21
14F:推 Luciel: 推推,我也是这麽想的 12/09 12:25
15F:推 Brownsugar16: 推推 数学好文 12/09 12:35
16F:推 tsining: 快推免得人家以为我看不懂(指考数甲9.5分报到 12/09 12:37
17F:推 simrays: 自从看到岩窟王21单後,认清期望值终结是期望 12/09 13:08
18F:推 jeffguoft: 手游抽卡的机率是一段时间内出货量/总量,外加函式调整 12/09 14:32
19F:→ jeffguoft: 固定时间间隔去抽,或许才能得到你的结论 12/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)的着作,就会知道好玩的数学其实也是很多的
20F:推 Mark40304: 楼上那个jeff是外挂仔 发言一直都怪怪的 12/09 21:21
21F:推 Katoru: 可恶,快推!!不然会被人发现我统计学被当(x) 12/09 21:21
22F:推 zipigi: 抱歉我就是400抽0五星的非洲人,保底对我来说还是需要的. 12/10 15:45
23F:→ zipigi: .. 12/10 15:45
24F:推 SSIKLO: 推一个,简单易懂 12/11 10:40
※ 编辑: yeez (125.229.0.174 台湾), 12/21/2022 02:53:51