作者chejps3105 (氋氃)
看板C_Chat
标题[枫之谷] 长年实际机率高於设定机率 原厂又道歉
时间Fri Apr 10 00:48:19 2026
橘子也发公告了,你没看错,这次的机率不实是实际「高」於表定(以及其他相对不重要
的机率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.com/cn.aspx?n=bbs/C_Chat/M.1775753301.A.226.html
1F:推 zyxx: 这种时候就会发公告了 04/10 00:50
2F:→ daidaidai02: 公告出来就好了 但不必修吧 04/10 00:50
3F:推 negisan39: 这麽久才发现还修掉是闲台湾玩家太多吗w 04/10 00:54
4F:推 joy3252355: 这个演算法挺有趣的 感谢说明 借转专板 04/10 01:06
※ joy3252355:转录至看板 MapleStory 04/10 01:06
5F:→ xo1100: 修不修也没差了 淡季玩家出逃中 04/10 01:07
6F:推 jeff666: 怎麽发现的阿 04/10 01:12
7F:→ jeff666: AI吗 04/10 01:12
8F:推 z900215ro: 为什麽要用这麽多箱子占用系统资源啊 04/10 01:19
9F:推 qaz19wsx96: 修不了因为是屎山代码所以下次改版统一加基本掉落 04/10 01:23
10F:→ qaz19wsx96: 率24% 04/10 01:23
11F:→ chejps3105: 是修掉才给24%,没修干嘛再多给玩家增加掉宝率 04/10 01:37
12F:推 GawrGura3527: 枫之谷改了这麽多东西 居然还有没改的屎山代码 04/10 01:46
13F:推 orze04: 不要重新发明轮子、程式能动就不要动 04/10 01:53
14F:推 livefish5566: 枫星关测试服了 04/10 02:02
15F:→ livefish5566: TMS 即将重返荣耀 04/10 02:02
16F:推 sillymon: 为什麽是用这种箱子算法呀 04/10 02:28
17F:推 ducamao: 比起这个问题比较大的还是活动掉落物或特定王掉落物不是 04/10 02:48
18F:→ ducamao: 照实际增加掉宝率计算吧,到现在才公布 04/10 02:48
19F:推 aegius1r: 说明版本是比喻吧 实际上就只是处理除不尽余数没做好 04/10 04:29
20F:推 tonylolz: 准备收一收吧 04/10 06:55
21F:推 Nitricacid: 码农祖训:能动就不要动 04/10 06:56
22F:推 devidevi: 高於设定机率还好阿,不要低於就好 04/10 07:20
23F:→ spfy: 这种最底层而且放了八百年没人动 但能正常跑的程式码 正常 04/10 07:22
24F:→ spfy: 工程师都不可能去碰的 他们是被谁托梦的吗 04/10 07:22
25F:推 kevin373tw1: 真的有高吗,还是觉得反正没人发现就这样写 04/10 07:49
26F:推 hayate65536: 丢给AI吃的时候抓出来的吧? 04/10 08:59
27F:推 ltytw: it is not bug, is feature 04/10 09:03
28F:推 crazyanight: 枫谷机率都能信的吗 04/10 09:05
29F:推 aaaaajack: 比较直接一点的讲法就是他把机率先近似成1e7/y,取一个 04/10 09:49
30F:→ aaaaajack: 0到y-1之间的随机整数判断他是否小於1e7,问题一般取这 04/10 09:49
31F:→ aaaaajack: 种随机数的方式是找一个范围更大的随机整数除以y取余数 04/10 09:49
32F:→ aaaaajack: ,但他这个32bit整数的范围既没比y大太多又不被y整除, 04/10 09:49
33F:→ aaaaajack: 导致不同余数实际被取到的机率有比较明显的差距 04/10 09:49
34F:推 orze04: 很可能是AI去爬出来的 04/10 14:25
35F:推 orze04: Claude Mythos最近就挖到OpenBSD一个27年的祖传漏洞。 04/10 14:26