王者站撸分析

news2024/9/21 14:50:13

王者站撸分析

问题背景

有这样两个角色
其中一个角色的被动是受到攻击会减少攻击者的攻速1%,该被动可以叠加40层
另一个角色的被动是攻击敌方会提升自己1%的免伤效果,该被动可以叠加20层
在站撸情况下 哪方胜算更大?

为了解决这个问题,我们需要建立一个数学模型,分析两个角色在“站撸”情况下的战斗表现,并比较哪一方的胜算更大。

1. 设定符号与参数

  • 角色A的被动效果:每次受到攻击减少攻击者1%的攻击速度,可以叠加40层。
  • 角色B的被动效果:每次攻击敌方增加自己1%的免伤效果,可以叠加20层。

假设:

  • A 0 A_0 A0 B 0 B_0 B0 分别为角色A和B的初始攻击速度。
  • D A D_A DA D B D_B DB 分别为角色A和B的初始攻击力。
  • H A H_A HA H B H_B HB 分别为角色A和B的初始生命值。
  • T T T 为时间。
  • n A ( T ) n_A(T) nA(T) n B ( T ) n_B(T) nB(T) 分别表示角色A和B在时间 T T T 时的攻击次数。
  • S A ( T ) S_A(T) SA(T) S B ( T ) S_B(T) SB(T) 分别表示角色A和B在时间 T T T 时的攻击速度。

2. 攻击速度与免伤效果的动态变化

  • 角色A每次受到攻击,攻击者的攻击速度降低1%。在时间 T 时,角色B的攻击速度为:
    S B ( T ) = B 0 × ( 1 − 0.01 × min ⁡ ( n B ( T ) , 40 ) ) S_B(T) = B_0 \times (1 - 0.01 \times \min(n_B(T), 40)) SB(T)=B0×(10.01×min(nB(T),40))

  • 角色B每次攻击,自己的免伤效果增加1%。在时间 T 时,角色B的免伤效果为:
    R B ( T ) = 1 − 0.01 × min ⁡ ( n B ( T ) , 20 ) R_B(T) = 1 - 0.01 \times \min(n_B(T), 20) RB(T)=10.01×min(nB(T),20)

3. 伤害计算

假设两角色的攻击频率较高,因此可以近似认为在每个时间段内,角色A和B的攻击间隔为 1 S A ( T ) \frac{1}{S_A(T)} SA(T)1 1 S B ( T ) \frac{1}{S_B(T)} SB(T)1

  • 角色A在时间 ( T ) 时对角色B造成的总伤害为:
    D A _ t o t a l ( T ) = n A ( T ) × D A × R B ( T ) D_{A\_total}(T) = n_A(T) \times D_A \times R_B(T) DA_total(T)=nA(T)×DA×RB(T)
  • 角色B在时间 ( T ) 时对角色A造成的总伤害为:
    D B _ t o t a l ( T ) = n B ( T ) × D B D_{B\_total}(T) = n_B(T) \times D_B DB_total(T)=nB(T)×DB

4. 胜负判定

假设战斗结束的条件是其中一方的生命值降为零。比较角色A和B的生命值变化,哪一方首先降为零,哪一方就输掉战斗。

5. 代码模拟

设置初始生命值为1000

分为攻击力5 50 200 500对程序进行模拟,当有一方被击败,则停止模拟。

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False

# 定义函数来模拟不同条件下的战斗结果
def simulate_battle_params(health_A, health_B, power_A, power_B, speed_A, speed_B):
    h_A, h_B = health_A, health_B
    s_A, s_B = speed_A, speed_B
    stacks_A, stacks_B = 0, 0
    delta_t = 0.05
    time = 0.0
    health_A_list, health_B_list = [h_A], [h_B]

    while h_A > 0 and h_B > 0:
        # 角色B攻击角色A
        if time % (1 / s_B) < delta_t:
            h_A -= power_B
            stacks_A = min(stacks_A + 1, 40)  # 角色A的最大叠加层数
            s_B = speed_B * (1 - 0.01 * stacks_A)

        # 角色A攻击角色B
        if time % (1 / s_A) < delta_t:
            h_B -= power_A * (1 - 0.01 * stacks_B)
            stacks_B = min(stacks_B + 1, 20)  # 角色B的最大叠加层数

        time += delta_t
        health_A_list.append(h_A)
        health_B_list.append(h_B)

    return health_A_list, health_B_list, time

# 分析初始攻击力相同但大小不同的情况,绘制图像
# 角色A和B的其他参数保持不变,攻击力从小到大变化
# 假设 simulate_battle_params 函数已经定义
attack_powers = [5,50,200,500]  # 攻击力从10变化到100,共4种情况

fig, axs = plt.subplots(2, 2, figsize=(10, 8))

colors = ['b', 'g', 'r', 'c']  # 为每条线设置颜色

# 生成不同攻击力下的结果曲线
for index, power in enumerate(attack_powers):
    health_A_list, health_B_list, _ = simulate_battle_params(1000, 1000, power, power, 1.0, 1.0)
    i = index // 2
    j = index % 2
    ax = axs[i][j]
    ax.plot(health_A_list, label=f'生命值 A (攻击力: {power})', color=colors[0])
    ax.plot(health_B_list, label=f'生命值 B (攻击力 {power})', color=colors[1])
    ax.set_ylim(0, 1000)
    ax.set_xlabel('时间')
    ax.set_ylabel('生命值')
    ax.legend()

plt.tight_layout()
plt.show()

结果分析

请添加图片描述

可以看出仅在攻击力小时,B先被击败,A获胜。攻击力大于50时,A先被击败,B获胜。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2070102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Flask-REXTs创建一个项目接口并利用github上传部署

实习过程中需要自己单独编写一个项目使用到的api&#xff0c;并独立完成api的上传部署&#xff0c;这里记录一下全过程。 第一步 编写本地代码 IDE pycharm上创建一个项目名称&#xff0c;然后所有项目文件及结构如下&#xff1a; 其中app.py文件就是实现的接口&#xff0c;就…

ant design pro 如何实现动态菜单带上 icon 的

ant design pro 如何去保存颜色ant design pro v6 如何做好角色管理ant design 的 tree 如何作为角色中的权限选择之一ant design 的 tree 如何作为角色中的权限选择之二ant design pro access.ts 是如何控制多角色的权限的ant design pro 中用户的表单如何控制多个角色 如上图…

免费无损音乐、音效素材,马住着6个网站

如果你正在寻找免费的无损音乐和音效素材&#xff0c;这里有6个网站可以帮助你找到高质量的资源。无论是制作视频、播客还是其他创意项目&#xff0c;这些平台提供了丰富的选项&#xff0c;满足你的各种需求。 1、菜鸟图库 音效素材下载_mp3音效大全 - 菜鸟图库 菜鸟图库音…

Datawhale X 李宏毅苹果书 AI夏令营 学习笔记(三)

批量归一化(Batch Normalization&#xff0c;BN) 如果说自适应学习率是让训练适应loss&#xff0c;那归一化就是让loss适应训练。 我们抛掉使用自适应学习率的想法&#xff0c;重新看下面的图。可以看到w1固定时&#xff0c;w2的梯度是比较大的。w2固定时&#xff0c;w1的梯度…

GitHub开源的PDF管理工具Stirling-pdf

Stirling pdf 手动搭建docker搭建 官网&#xff1a;https://github.com/Stirling-Tools/Stirling-PDF 手动搭建 Ubuntu2404环境 安装所需软件包 apt install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g openjdk-21-jdk python3…

【R语言】基于nls函数的非线性拟合

非线性拟合 1.写在前面2.实现代码 1.写在前面 以下代码记录了立地指数的计算过程&#xff0c;包括了优势树筛选、误差清理、非线性拟合以及结果成图。 优势树木确定以及数据清理过程&#xff1a; 相关导向函数&#xff1a; 2.实现代码 ##*******************************…

web测试之功能测试常用的方法有哪几种?有什么要点要注意?

1、前言 功能测试就是对产品的各功能进行验证&#xff0c;根据功能测试用例&#xff0c;逐项测试&#xff0c;检查产品是否达到用户要求的功能。 2、常用的测试方法如下&#xff1a; 1、页面链接检查&#xff1a; 每一个链接是否都有对应的页面&#xff0c;并且页面之间切换…

在Excel中“直接引用”字符串地址

indirect是Excel唯一可以拥有直接解析字符串引用地址参数能力的函数&#xff0c;是绝无仅有的宝贝疙瘩。 (笔记模板由python脚本于2024年08月21日 12:45:49创建&#xff0c;本篇笔记适合喜欢用Excel处理数据的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;ht…

Navicat中怎么查看数据库密码

一、版本问题 场景&#xff1a;在配置数据库连接后&#xff0c;忘记了数据库的密码&#xff0c;想要找回来。 其实有些版本&#xff08;好像是低版本才有&#xff0c;具体哪个版本就没去研究了&#xff09;在配置连接页面&#xff0c;是有个选项勾选是否显示密码的&#xff0…

Datawhale AI 夏令营(第五期) 李宏毅苹果书 Task 1 《深度学习详解(入门)》- 1.1 通过案例了解机器学习

预测本频道观看人数&#xff08;上&#xff09; - 机器学习基本概念简介_哔哩哔哩_bilibili 1 隐藏任务&#xff1a;找出本篇中形如回归&#xff08;regression&#xff09;加粗字体的术语&#xff0c;并用自己的话进行解释&#xff0c;列成表格 术语解释机器学习&#xff08;…

改VS2008 MFC项目 C语言1改字体,2颜色,3界面禁用项 CCM4202S量产SP下载工具 天津国芯

效果 1改字体 用progresss上画文字&#xff0c;并改字体及大小 要修改 DrawText 函数绘制文本的字体大小&#xff0c;你需要在绘制之前设置设备上下文的字体。这里是一个完整的示例&#xff0c;展示了如何在使用 DrawText 函数之前设置字体大小。 假设你已经有一个 HDC 设备…

85.游戏改造-修改UI分辨率,面向对象方式

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;84.游戏改造-窗口化下的分辨率 首先剑侠情缘这个游戏它按f9是可以隐藏ui界面的&#xf…

stm32-USB-1

1. USB简介 USB&#xff0c; 英文全称&#xff1a;Universal Serial Bus&#xff0c;即通用串行总线 USB提供适合各种应用的传输协议&#xff0c;而且协议标准向下兼容 优缺点 2. USB2.0拓扑结构 USB是一种主从结构的系统&#xff0c;数据交换只能发生在主从设备之间&#…

Jenkins配置SSH凭据

在jenkins中&#xff0c;绕不开的便是操作远程的SSH服务器&#xff0c;如向远程服务器传送文件、在远程服务器上执行脚本或者命令等&#xff0c;而这一切的前提&#xff0c;则需要配置访问远程服务器的凭据&#xff0c;常用的方式包括远程服务器的账号和密码以及密匙对等&#…

编译 ARM 平台 Qt5.12.9 源码-思维导图-学习笔记-基于正点原子阿尔法开发板

编译 ARM 平台 Qt5.12.9 源码 概述 库的后缀名 Windows平台&#xff1a;编译出的Qt库文件后缀为.dll Linux平台&#xff1a;编译出的Qt库文件后缀为.so 这些库被称为动态库&#xff0c;意味着它们在运行时被加载到应用程序中&#xff0c;而不是在编译时静态链接 库的作用 …

Linux--数据链路层(macarp)

目录 1.认识以太网 2.以太网帧格式 3.模拟一次局域网通信&#xff08;交换机&#xff09; 4.认识 MAC 地址 对比理解 MAC 地址和 IP 地址 5.认识MTU MTU 对 IP 协议的影响 MTU 对 UDP 协议的影响 MTU 对于 TCP 协议的影响 6.ARP协议 ARP 协议的作用及原理 ARP 数据报的…

【精选】基于移动端的个人博客系统的设计与实现(源码+定制+辅导)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Java面试题--JVM大厂篇之JVM 大厂面试题及答案解析(2)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到我的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客&…

关于“数据完全版本记录”的系统设计

时间&#xff1a;2024年08月24日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 音频&#xff1a;https://xima.tv/1_Gtthca?_sonic0 希望大家帮个忙&#xff01;如果大家有工作机会&#xff0c;希望帮小蒋内推一下&#xff0c…