Skip to content

🚀 Implement maxV2 scoring algorithm / 引入 maxV2 评分算法以优化评分准确性#8

Open
ocetars wants to merge 2 commits intoMar-7th:masterfrom
ocetars:master
Open

🚀 Implement maxV2 scoring algorithm / 引入 maxV2 评分算法以优化评分准确性#8
ocetars wants to merge 2 commits intoMar-7th:masterfrom
ocetars:master

Conversation

@ocetars
Copy link

@ocetars ocetars commented Nov 19, 2025

Description / 描述

本次提交对遗器评分算法进行了核心升级,在评分 JSON 中引入了 maxV2 字段。

变更背景:
原版算法在计算理论最高分时,所有部位均采用统一的 (6, 1, 1, 1) 词条分布模型。这忽略了固定主属性部位(头、手)与随机主属性部位(衣、鞋、球、绳)在获取难度上的巨大差异。

新版 maxV2 算法针对此问题进行了概率模型修正,旨在提供更符合游戏实际概率的评分标准。

1. 核心变更:区分部位计算逻辑 (Per-part Calculation)

为了更精准地反映获取难度,新算法根据主属性类型应用了不同的词条分布模型:

部位类型 包含部位 获取难度 模型假设 分布模型
固定主属性 头部、手部 初始 4 词条
(4 初始 + 5 强化 = 9 次计数)
(6, 1, 1, 1)
极限分布
随机主属性 躯干、脚部、
位面球、连结绳
初始 3 词条
(3 初始 + 4 强化 + 1 填充 = 8 次计数)
(5, 1, 1, 1)
极限分布

2. 沿用词条互斥 (Exclusion Logic)

针对随机主属性部位(如暴击衣):

  • 逻辑: 在计算副词条理论最高分时,自动排除该部位的最佳主属性
  • 目的: 避免出现“暴击衣副词条出暴击”这类不可能情况干扰分母计算。

3. 完全向后兼容性 (Backward Compatibility)

为确保现有应用不受影响,采用了非破坏性更新:

  • 保留 max 字段: 继续沿用旧版算法(全统一模型 + 1.2 系数 + 平均值),旧版数据结构保持不变。
  • 新增 maxV2 字段: 采用对象结构存储各部位独立的理论最高分,格式为 {"1": val, "2": val, ...}

Results / 结果验证

使用新版算法对 521 个实际角色样本进行了重新评分,效果如下:
PixPin_2025-11-20_10-55-10
301f2cb5-f5dd-4678-8b21-c62b4af0bde4

改进效果总结

  • 极佳的动态范围 (High Dynamic Range):
    数据在 [0, 1] 全谱系区间内分布合理。算法克服了常见的“数值堆积”或“两极化”问题,密度曲线平滑无断层,展现了优秀的抗饱和能力。

  • 高精度的区分度 (High Granularity):
    即使在样本集中的高分区间,算法依然保持了敏锐的颗粒度。如图 2 所示,这种分布支持更精细的段位划分(如这里我选择做出了 9 层分段,亦可根据需求轻松自定义),能精准捕捉并拉开样本间微小的质量差异。

  • 更真实的体感 (Realistic Experience):

    • 难度修正: 头部/手部的理论上限提高,核心部位(衣/鞋等)上限根据冲突逻辑下调。
    • 毕业认知: 大部分“小毕业”角色的评分自然落在 0.8 - 0.9 区间,高度契合玩家对“小毕业 -> 大毕业 -> 极限毕业”的心理预期。

Checklist / 检查清单

  • ✅ 代码通过测试,脚本运行无误
  • score.json 输出格式符合预期
  • ✅ 更新了 README.md 文档说明
  • ✅ 保持了对旧版 max 字段和计算方法的兼容

@ocetars
Copy link
Author

ocetars commented Nov 19, 2025

根据自己理解做出了一些改进,请作者看看是否合理,希望交流一下~
@mobyw

@ocetars ocetars changed the title 🚀 Implement maxV2 scoring algorithm / 引入 maxV2 评分算法以优化遗器评分准确性 🚀 Implement maxV2 scoring algorithm / 引入 maxV2 评分算法以优化评分准确性 Nov 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant