橘子也發公告了,你沒看錯,這次的機率不實是實際「高」於表定(以及其他相對不重要
的機率bug),是從開服至今都沒被修正的有利於玩家的bug
https://maplestory.beanfun.com/bulletin?bid=80429
簡單來說就是原廠發現開服至今20多年來掉寶率、爆擊率等等使用的機率演算法有bug(詳
細我寫在後面,沒興趣的可以跳過),導致實際的機率比設定的機率還高,所以要修正,
但是修正後大家實際掉落率都會下降,所以所有角色基本掉落率增加24%,以及道歉和虛
寶補償
嗯……原來現代楓之谷還沒辦法擺脫20年前寫的屎山代碼,是說20多年都沒工程師發現並
想修改這個對玩家有利的bug嗎
=====以下是這次有問題的機率演算法簡介=====
依照金總監(韓版楓之谷總監)直播說的,使用了20多年的有bug的機率演算法大致如下
中獎機率為 x (x大於0小於1),則產生 10000000/x (1000萬除以x) 個箱子,然後會有 4
294967296 顆球(2的32次方),將所有的球平分到 10000000/x 個箱子內,其中會有 1000
0000(1000萬) 個箱子是中獎的箱子,其餘 10000000/x-10000000 個是沒中獎的箱子,然
後從 4294967296 顆球中抽取一顆球,如果那顆球是放在中獎箱子的球,代表這次中獎了
問題來了,箱子數目不可能每次都能整除 4294967296 ,那餘數的球怎麼辦,他們演算法
設計會優先將多餘的球放到中獎箱子,若中獎箱子全部都被額外多放一顆後還有剩才會放
到沒中獎箱子,這就是導致實際機率比表定機率高的元兇
以中獎機率1%為例,會有1000萬/1%=10億個箱子
可整除部分每個箱子平分4顆球
剩餘2億9千萬多顆球不能平分給10億個箱子,所以其中1000萬顆優先塞入中獎箱子,再剩
下的2億8千萬多顆球才放入沒中獎箱子
那這樣1000萬個中獎箱子每個都會有各5顆球,所以共5000萬顆球是中獎的
實際中獎機率5000萬/42億9496萬7296=約1.164%,比1%高了約16.4%
那中獎機率1.1%實際會是怎樣呢?會有1000萬/1.1%=約9.09億個箱子
可整除部分每個箱子平分4顆球,剩的也足夠1000萬顆中獎箱子各放1顆,所以掐指一算一
樣共5000萬顆球是中獎的,實際中獎機率5000萬/42億9496萬7296=約1.164%,雖然和1%時
一模一樣,但也有超過1.1%,看似問題不大,但大家仔細想想,如果1%和1.1%是因為穿上
10%掉寶裝造成的(原本掉落率1%,穿上10%掉寶裝,掉落率變1.1%),因為1%和1.1%實際機
率一樣,所以會導致這件10%掉寶裝有穿跟沒穿根本沒差,問題就相對比較大條了……
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.8.162.151 (臺灣)
※ 文章網址: https://webptt.cc/bbs/C_Chat/M.1775753301.A.226.html
※ joy3252355:轉錄至看板 MapleStory 04/10 01:06
推文 (35)
推
zyxx
這種時候就會發公告了
04/10 00:50
→
daidaidai02
公告出來就好了 但不必修吧
04/10 00:50
推
negisan39
這麼久才發現還修掉是閒台灣玩家太多嗎w
04/10 00:54
推
joy3252355
這個演算法挺有趣的 感謝說明 借轉專板
04/10 01:06
→
xo1100
修不修也沒差了 淡季玩家出逃中
04/10 01:07
推
jeff666
怎麼發現的阿
04/10 01:12
→
jeff666
AI嗎
04/10 01:12
推
z900215ro
為什麼要用這麼多箱子佔用系統資源啊
04/10 01:19
推
qaz19wsx96
修不了因為是屎山代碼所以下次改版統一加基本掉落
04/10 01:23
→
qaz19wsx96
率24%
04/10 01:23
→
chejps3105
是修掉才給24%,沒修幹嘛再多給玩家增加掉寶率
04/10 01:37
推
GawrGura3527
楓之谷改了這麼多東西 居然還有沒改的屎山代碼
04/10 01:46
推
orze04
不要重新發明輪子、程式能動就不要動
04/10 01:53
推
livefish5566
楓星關測試服了
04/10 02:02
→
livefish5566
TMS 即將重返榮耀
04/10 02:02
推
sillymon
為什麼是用這種箱子算法呀
04/10 02:28
推
ducamao
比起這個問題比較大的還是活動掉落物或特定王掉落物不是
04/10 02:48
→
ducamao
照實際增加掉寶率計算吧,到現在才公布
04/10 02:48
推
aegius1r
說明版本是比喻吧 實際上就只是處理除不盡餘數沒做好
04/10 04:29
推
tonylolz
準備收一收吧
04/10 06:55
推
Nitricacid
碼農祖訓:能動就不要動
04/10 06:56
推
devidevi
高於設定機率還好阿,不要低於就好
04/10 07:20
→
spfy
這種最底層而且放了八百年沒人動 但能正常跑的程式碼 正常
04/10 07:22
→
spfy
工程師都不可能去碰的 他們是被誰托夢的嗎
04/10 07:22
推
kevin373tw1
真的有高嗎,還是覺得反正沒人發現就這樣寫
04/10 07:49
推
hayate65536
丟給AI吃的時候抓出來的吧?
04/10 08:59
推
ltytw
it is not bug, is feature
04/10 09:03
推
crazyanight
楓谷機率都能信的嗎
04/10 09:05
推
aaaaajack
比較直接一點的講法就是他把機率先近似成1e7/y,取一個
04/10 09:49
→
aaaaajack
0到y-1之間的隨機整數判斷他是否小於1e7,問題一般取這
04/10 09:49
→
aaaaajack
種隨機數的方式是找一個範圍更大的隨機整數除以y取餘數
04/10 09:49
→
aaaaajack
,但他這個32bit整數的範圍既沒比y大太多又不被y整除,
04/10 09:49
→
aaaaajack
導致不同餘數實際被取到的機率有比較明顯的差距
04/10 09:49
推
orze04
很可能是AI去爬出來的
04/10 14:25
推
orze04
Claude Mythos最近就挖到OpenBSD一個27年的祖傳漏洞。
04/10 14:26