原标题:原神:圣遗物掉落模拟器-究极简陋版
作者:NGA-破碎的心
今天下午没啥事,恰巧想起来之前的一个帖子,想了想不如花点时间写个极简版掉落模拟器。

完全不会前端,如果你愿意基于这段code,增加可视化或者更多的功能,随意随意。
dependency应该只有numpy,其他应该py3就够了。code应该也足够简单,只有比较简单的注释,有什么问题或者bug欢迎反馈。
目前主要有两个功能:
1. 模拟45级圣遗物本的掉落(只关注金圣遗物)。
2. 对于圣遗物的属性进行排序(根据用户提供的权重)。
例子 (实时更新一些常见问题的计算结果,也欢迎大家提问题,我来帮着算一算。):
如果我用一年的自回体刷一个本,需求的属性是 :暴击=爆伤=元素伤害>攻击力%>攻击力,我能拿到什么样的圣遗物?
一次模拟,每个位置的前三的圣遗物:
Got 360 生之花.
生之花:
生命值 : 4780.0
防御力 : 40.0
暴击率% : 10.5
暴击伤害% : 12.4
防御力% : 11.7
生之花:
生命值 : 4780.0
元素充能% : 4.5
生命值% : 9.9
暴击率% : 10.1
暴击伤害% : 12.4
生之花:
生命值 : 4780.0
元素充能% : 17.5
攻击力% : 10.0
暴击率% : 7.0
暴击伤害% : 14.0
Got 370 死之羽.
死之羽:
攻击力 : 322.0
生命值% : 5.8
暴击率% : 10.1
暴击伤害% : 18.7
元素精通 : 16.0
死之羽:
攻击力 : 322.0
防御力 : 23.0
生命值 : 299.0
暴击率% : 10.1
暴击伤害% : 17.8
死之羽:
攻击力 : 322.0
防御力 : 19.0
暴击率% : 6.2
暴击伤害% : 24.8
防御力% : 14.6
Got 349 时之沙.
时之沙:
攻击力% : 46.6
元素充能% : 9.0
生命值 : 777.0
暴击率% : 10.9
暴击伤害% : 7.9
时之沙:
攻击力% : 46.6
元素充能% : 5.8
防御力 : 23.0
攻击力 : 34.0
暴击率% : 13.2
时之沙:
攻击力% : 46.6
攻击力 : 36.0
暴击率% : 6.6
防御力% : 13.9
暴击伤害% : 12.4
Got 383 空之杯.
空之杯:
元素伤害% : 46.6
攻击力% : 9.4
暴击率% : 12.8
暴击伤害% : 5.4
元素精通 : 32.0
空之杯:
元素伤害% : 46.6
防御力 : 19.0
生命值% : 8.2
生命值 : 239.0
暴击率% : 16.7
空之杯:
元素伤害% : 46.6
防御力 : 19.0
攻击力 : 51.0
生命值% : 4.7
暴击伤害% : 19.4
Got 359 理之冠.
理之冠:
暴击率% : 31.1
防御力 : 23.0
攻击力% : 5.3
生命值% : 8.8
暴击伤害% : 24.8
理之冠:
暴击伤害% : 62.2
生命值% : 5.8
生命值 : 717.0
攻击力% : 5.3
暴击率% : 12.0
理之冠:
暴击率% : 31.1
防御力 : 23.0
生命值 : 508.0
攻击力% : 9.4
暴击伤害% : 21.2
我想刷一个好的暴击头,要刷多少次?
暴击头 …暂时定义好的暴击头为对应爆伤>20% (差不多需要副属性加强2,3次)
那么需要的刷本次数是:
10-percentile ( 欧皇): 187
50-percentile (正常人): 1134
90-percentile (非酋): 3145
注意一天的自回体只能刷9次。。所以有10%的非酋一年左右才能刷到;正在给甘雨刷装备的我瑟瑟发抖;还好实际上我们可以4+1,所以实际情况不会这么惨。
我想刷一个好的攻击沙漏,要刷多少次?
攻击沙漏 …暂时定义好的攻击沙漏为对应暴击爆伤副属性总共加强2,3次
10-percentile (欧皇): 70
50-percentile (正常人): 524
90-percentile (非酋): 1703
看起来比暴击头简单很多。
我想刷一个好的双暴元素杯,要刷多少次?
双暴元素杯 …暂时定义”好“为对应暴击爆伤副属性总共加强2,3次
10-percentile (欧皇): 337
50-percentile (正常人): 2263
90-percentile (非酋): 8486
可见这不是一般人能刷出来的。。如果不限制圣遗物系列的话这个数字大概能除以2,也算是留个念想吧;
我想刷一个好的双暴 头/羽毛,要刷多少次?
双暴 头/羽毛 …暂时定义”好“为对应暴击爆伤副属性总共加强2,3次
10-percentile (欧皇): 14
50-percentile (正常人): 118
90-percentile (非酋): 396
可见这边才是一般难度;
圣遗物的掉落目前还是有一些不确定的地方,下面是我的实现中可能有错的地方:
1. 45级圣遗物本可以掉1或2个金色圣遗物,但是不知道各自概率(瞎猜是10%掉2个,见default_num_lvl5_pdf);
2. 金色圣遗物可以有3或4个初始副属性,但是不知道具体概率(瞎猜20%有4个,见default_p_substat_cnt_3);
3. 参考文献1里的数据量不够,标准差差不多2%,而且副属性很多都只是marginal distribution,所以我做了如下近似:
a. 主属性分布直接用参考文献1的经验数据;
b. 副属性用整体的边缘分布(就近取整)来确定他们之间的比例;目测不正确(尤其是HP,ATK,DEF)但是错的不多;
4. 假设副本均匀掉落两种圣遗物和5个位置(p_correct_set, default_artifact_type_pdf);
一些明显的缺点/缺失,可能会根据我的时间选着改/加:
1. 圣遗物明显是4+1或者2+2+1,所以目前的API需要进一步的wrap,要不然不好用;
2. 没加monte carlo + 圣遗物属性的汇总;要想回答“想刷到XXX水平需要刷多少次”这类问题需要这类功能,不过很容易加;
责任编辑: