蒙特卡洛的方法计算凌波风云再会直接击倒全部人物单位的可能性
我们假设我们对面的人物单位为辅助 15000血,被打伤害2500,
封系 17000血,被打伤害3500,
封系 17000血,被打伤害3000,
输出 13000血,被打伤害4000,
输出 13000血,被打伤害4000,
五个宝宝8000血,被攻击伤害5000
假设所有人物速度高于召唤兽,凌波点选输出攻击,如果倒地,点选目标随机,飞机、惊涛怒对6,4目标造成100%伤害伤害,浪涌对3目标造成70%伤害,裂石对一个目标造成100%,断岳造成180%,天崩造成270%,输出有70%到130%的随机波动
加入血量可能不满和可能有盾之类的效应全部抵消,认为他们都是满血的,
那么在100万次测试中,出现全部单位击倒的情况为 0
除了辅助以外的人全部被击倒的情况 为 5
除了辅助和耐封系,其他人全部被击倒的次数 55
双输出倒地的情况 3842
点选目标倒地的情况 573914
综上所述,风云再会,像谛听以后完全改变战局的情况,不太可能出现,甚至而言,压倒双输出的情况都非常难以出现。其中点选目标倒地的概率仅仅为57.3%,非常不稳定。凌波想依赖风云再会完成完全取胜几乎不太可能。
其中传说中七次飞机的概率为42亿分之一,将这个福分拿去抽强力球,足以买下整个网易。
下面为代码,有BUG可以提出
import random
shanghai =
def lieshi(xueliang,order):
bodong = random.uniform(0.7, 1.3)
xueliang] -=xueliang]-shanghai]*bodong
return xueliang
def duanyue(xueliang,order):
bodong =
xueliang] = xueliang]-shanghai]*bodong-shanghai]*bodong*0.7
return xueliang
def tianbeng(xueliang,order):
bodong =
xueliang] = xueliang]-shanghai]*bodong-shanghai]*bodong*0.9-shanghai]*bodong*0.7
return xueliang
def langyong(xueliang,order):
bodong =
for i in range(min(3,len(order))):
xueliang] -= shanghai]*bodong*0.7
return xueliang
def jingtao(xueliang,order):
bodong =
for i in range(min(4,len(order))):
xueliang] -= shanghai]*bodong
return xueliang
def fanjiang(xueliang,order):
bodong =
for i in range(min(6,len(order))):
xueliang] -= shanghai]*bodong
return xueliang
def gongji(xueliang,zhaoshu):
order = []
for danwei,xue in enumerate(xueliang):
if xue>0:
order.append(danwei)
if len(order) == 0:
return xueliang
if order!=0 and len(order)>1:
index = random.randint(1,len(order)-1)
num = order
order.pop(index)
order.insert(0,num)
if zhaoshu == 1:
return lieshi(xueliang,order)
if zhaoshu == 2:
return duanyue(xueliang,order)
if zhaoshu == 3:
return tianbeng(xueliang,order)
if zhaoshu == 4:
return langyong(xueliang,order)
if zhaoshu == 5:
return jingtao(xueliang,order)
if zhaoshu == 6:
return fanjiang(xueliang,order)
def fengyunzaihui():
xueliang =
dianshu = 0
while dianshu<=6:
zhaoshu = random.randint(1,6)
xueliang = gongji(xueliang,zhaoshu)
dianshu += random.randint(1,5)
for i in :
if xueliang>0:
return False
return True
res = 0
for i in range(1000000):
if fengyunzaihui():
res+=1
我们还可以考虑包含暴击的情况,如果加入20%的暴击率,那么情况会变成:
加入血量可能不满和可能有盾之类的效应全部抵消,认为他们都是满血的,
那么在100万次测试中,出现全部单位击倒的情况为 33
除了辅助以外的人全部被击倒的情况 为 194
除了辅助和耐封系,其他人全部被击倒的次数 1188
双输出倒地的情况 18204
点选目标倒地的情况 659715
如果点选目标是辅助,那么击倒他的概率为320905 (32%)
Better finish your PhD first. If you have, find a tenured job first. 南高师 发表于 2023-4-17 11:00 美国
Better finish your PhD first. If you have, find a tenured job first.
#37 还可以这样#24
页:
[1]