Skip to main content
摘要:本文聚焦「Unity PRD 算法插件:伪随机分布的 C# 实现」,梳理核心概念、关键方法与落地实践。
文档目标:提供一个开箱即用的 C# 类库,用于在 Unity 中替换 Random.value,实现“暴击/闪避”等概率事件的“保底”与“防连黑”。

1. 为什么需要 PRD?

在真随机 (True Random) 中,25% 的暴击率意味着你可能连续 10 次不暴击(体验极差),也可能连续 10 次暴击(平衡崩坏)。 PRD (Pseudo-Random Distribution) 通过动态调整概率 C 值,让“期望概率”稳定在 25%,且几乎不会出现长连黑或长连爆。 参考:Dota 2 / Warcraft 3 算法。

2. 核心算法原理

每次攻击:
  • P_actual = C * N
    • C: 预计算的基础常数(对应目标概率)。
    • N: 连续未触发的次数(从 1 开始)。
  • 如果触发:重置 N = 1
  • 如果未触发:N++

3. C# 代码实现 (PRD.cs)

将此脚本放入 Assets/Scripts/Utils

4. 使用示例


5. 性能优化版 (Struct + Job System)

如果是 ECS 架构,不要使用 Class。

注:完整的 C 常数表请参考数值策划文档,或使用 Design/Calculator/index.html 工具生成。