原神抽卡模型#
GGanalysis 使用基本的抽卡模板模型结合 原神抽卡系统参数 定义了一系列可以直接取用的抽卡模型。
此外,还针对性编写了如下模板模型:
适用于计算5.0版本前武器活动祈愿定轨时获取道具问题的模型
ClassicGenshin5starEPWeaponModel
适用于计算在活动祈愿中获得常驻祈愿五星/四星道具的模型
GenshinCommon5starInUPpoolModel
注意
原神的四星保底不会被五星重置,但与五星耦合时仍会在综合概率上产生细微的影响。此处的模型没有考虑四星和五星的耦合。
原神常驻祈愿中具有“平稳机制”,即角色和武器两种类型的保底,GGanalysis 包没有提供这类模型,有需要可以使用 GGanalysislib 包 。角色活动祈愿及武器活动祈愿中也有此类机制,由于其在“UP机制”后生效,对于四星UP道具抽取可忽略。
参数意义#
item_num
需求物品个数,由于 sphinx autodoc 的 bug 在下面没有显示
multi_dist
是否以列表返回获取 1-item_num 个物品的所有分布列
item_pity
道具保底状态,通俗的叫法为水位、垫抽
up_pity
UP道具保底状态,设为 1 即为玩家所说的大保底
cr_pity
「捕获明光」保底状态
基本模型#
角色活动祈愿及常驻祈愿获得五星道具的模型
- gacha_model.common_5star(multi_dist: bool = False, item_pity=0) FiniteDist | list #
带保底抽卡类
角色活动祈愿及常驻祈愿获得四星道具的模型
- gacha_model.common_4star(multi_dist: bool = False, item_pity=0) FiniteDist | list #
带保底抽卡类
角色活动祈愿模型#
角色活动祈愿5.0版本后获得UP五星角色的模型
- gacha_model.up_5star_character(multi_dist: bool = False, item_pity=0, up_pity=0, cr_pity=0) FiniteDist | list #
针对原神5.0后加入的「捕获明光」机制的模型
角色活动祈愿5.0版本前获得UP五星角色的模型
- gacha_model.classic_up_5star_character(multi_dist: bool = False, item_pity=0, up_pity=0) FiniteDist | list #
双重保底抽卡类
角色活动祈愿获得任意UP四星角色的模型
- gacha_model.up_4star_character(multi_dist: bool = False, item_pity=0, up_pity=0) FiniteDist | list #
双重保底抽卡类
角色活动祈愿获得特定UP四星角色的模型
- gacha_model.up_4star_specific_character(multi_dist: bool = False, item_pity=0, up_pity=0) FiniteDist | list #
双重保底伯努利类
import GGanalysis.games.genshin_impact as GI
# 原神角色池的计算
print('角色池在垫了20抽,有大保底,已经连歪两次的情况下抽3个UP五星抽数的分布')
dist_c = GI.up_5star_character(item_num=3, item_pity=20, up_pity=1, cr_pity=2)
print('期望为', dist_c.exp, '方差为', dist_c.var, '分布为', dist_c.dist)
武器活动祈愿模型#
武器活动祈愿获得五星武器的模型
- gacha_model.common_5star_weapon(multi_dist: bool = False, item_pity=0) FiniteDist | list #
带保底抽卡类
武器活动祈愿获得UP五星武器的模型
注意此模型建模的是获得任意一个UP五星武器即满足要求的情况
- gacha_model.up_5star_weapon(multi_dist: bool = False, item_pity=0, up_pity=0) FiniteDist | list #
双重保底抽卡类
武器活动祈愿无定轨情况下获得特定UP五星武器的模型
注意此模型建模的是2.0前无定轨情况下获得特定UP五星武器的情况
- gacha_model.classic_up_5star_specific_weapon(multi_dist: bool = False, item_pity=0, up_pity=0) FiniteDist | list #
双重保底伯努利类
武器活动祈愿5.0版本后定轨情况下获得特定UP五星武器的模型
- gacha_model.up_5star_ep_weapon(multi_dist: bool = False, item_pity=0, up_pity=0) FiniteDist | list #
双重保底抽卡类
武器活动祈愿获得四星武器的模型
- gacha_model.common_4star_weapon(multi_dist: bool = False, item_pity=0) FiniteDist | list #
带保底抽卡类
武器活动祈愿获得UP四星武器的模型
- gacha_model.up_4star_weapon(multi_dist: bool = False, item_pity=0, up_pity=0) FiniteDist | list #
双重保底抽卡类
武器活动祈愿获得特定UP四星武器的模型
- gacha_model.up_4star_specific_weapon(multi_dist: bool = False, item_pity=0, up_pity=0) FiniteDist | list #
双重保底伯努利类
import GGanalysis.games.genshin_impact as GI
print('武器池池在垫了30抽,有大保底,命定值为1的情况下抽1个UP五星抽数的分布')
dist_w = GI.up_5star_ep_weapon(item_num=1, item_pity=30, up_pity=1, fate_point=1)
print('期望为', dist_w.exp, '方差为', dist_w.var, '分布为', dist_w.dist)
其它模型#
5.0前从角色活动祈愿中获取位于常驻祈愿的特定五星角色的模型
- gacha_model.classic_stander_5star_character_in_up(multi_dist: bool = False, item_pity=0, is_last_UP=False) FiniteDist | list #
5.0前从武器活动祈愿中获取位于常驻祈愿的特定五星武器的模型
- gacha_model.classic_stander_5star_weapon_in_up(multi_dist: bool = False, item_pity=0, is_last_UP=False) FiniteDist | list #
其它使用示例#
# 联合角色池和武器池
print('在前述条件下抽3个UP五星角色,1个特定UP武器所需抽数分布')
dist_c_w = dist_c * dist_w
print('期望为', dist_c_w.exp, '方差为', dist_c_w.var, '分布为', dist_c_w.dist)
# 对比玩家运气
dist_c = GI.up_5star_character(item_num=10)
dist_w = GI.up_5star_ep_weapon(item_num=3)
print('在同样抽了10个UP五星角色,3个特定UP五星武器的玩家中,仅花费1000抽的玩家排名前', str(round(100*sum((dist_c * dist_w)[:1001]), 2))+'%')