吃饭(等异客)前几分钟看不进论文写着玩的,模型和代码都很简单,闲着的时候练练手。试了几个玩过的游戏,基本都是有保底机制的,对于FGO的保底机制不是很清楚,另外两个游戏是递增模型。至于计算模型就是很简单的概率论模型。just for fun
mihoyo给出了一个综合出金概率1.600%含保底,吃饭前突然想到这个想看看他是怎么算的,就随手写了个小练习计算了一下这类含保底游戏的出金期望。搜了一下FGO、原神、明日方舟三个游戏的保底机制然后用了简单的概率论模型计算了出金期望。
为第n次出金的概率,为前n-1次都不出金的概率,因此得出p(x)为直到第x次才首次出金的概率,关于p(x)的计算则直接参考网上搜的数据,num_s为开始概率增加的次数,num_end为最终必出金卡的次数。
代码:
import numpy as np
class wildcard(): # Ex = p1*x1*1 + ... + pn*xn*n
def __init__(self, base=0.006, num_s=73, num_end=90):
self.base = base
self.num_s = num_s
self.num_end = num_end
self.add = (1.0 - self.base)/(self.num_end - self.num_s)
def now_rate(self, n):
if n <= self.num_s:
return self.base
else:
return self.base + self.add*(n - self.num_s)
def compute_p(self, n):
if n == 1:
return 1.0
else:
return self.compute_p(n-1) * (1.0 - self.now_rate(n-1))
def get_ex(self):
ex = 0
for i in range(1,self.num_end+1):
ex += self.now_rate(i) * self.compute_p(i) * i
return ex
Genshin = wildcard()
exG = Genshin.get_ex()
Arknights = wildcard(0.02, 50, 99)
exA = Arknights.get_ex()
FateGrandOrder = wildcard(0.01, 333, 334)
exF = FateGrandOrder.get_ex()
print('The average number of a SSR in Genshin is:',int(exG))
print('The average number of a SSR in Arknight is:',int(exA))
print('The average number of a SSR in FateGrandOrder is:',int(exF))
整体实现还挺简单的,算出来的结果也和网上看到的平均出金次数差不多,FGO的那个三百多抽的保底基本上没有效果所以最后结果也很接近100抽,取整后原的62*1.6%和给的概率也差不多。(顺便粥的出货率真的好高啊)
文章来源:https://www.toymoban.com/news/detail-616087.html
文章来源地址https://www.toymoban.com/news/detail-616087.html
到了这里,关于杂谈||Python实现计算含保底抽卡出金期望的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!