神风无敌 发表于 2023-4-17 03:47:27

蒙特卡洛的方法计算凌波风云再会直接击倒全部人物单位的可能性

我们假设我们对面的人物单位为
辅助 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


神风无敌 发表于 2023-4-17 04:04:44

我们还可以考虑包含暴击的情况,如果加入20%的暴击率,那么情况会变成:
加入血量可能不满和可能有盾之类的效应全部抵消,认为他们都是满血的,
那么在100万次测试中,出现全部单位击倒的情况为      33
除了辅助以外的人全部被击倒的情况 为   194
除了辅助和耐封系,其他人全部被击倒的次数    1188
双输出倒地的情况 18204
点选目标倒地的情况 659715

如果点选目标是辅助,那么击倒他的概率为320905 (32%)

南高师 发表于 2023-4-17 11:00:03

Better finish your PhD first. If you have, find a tenured job first.

神风无敌 发表于 2023-4-17 21:11:42

南高师 发表于 2023-4-17 11:00 美国
Better finish your PhD first. If you have, find a tenured job first.

#37

彪布拉基 发表于 2023-4-17 21:20:19

还可以这样#24
页: [1]
查看完整版本: 蒙特卡洛的方法计算凌波风云再会直接击倒全部人物单位的可能性