-4

我正在尝试计算一种算法并在 C# 中实现它,该算法将计算角色扮演游戏中对敌人的命中率。

本质上,如果我的角色的灵巧度与对手的灵巧度相等,那么我的命中率是 90%。如果我的灵巧是我对手的500%,我的命中率是100%,如果我的对手是我的500%,那么我的命中率是0%。

我一直在寻找曲线拟合公式一个小时,我的大脑被破坏了。

也许这是一种确定命中机会的方法太复杂了?也许有人也可以提供更好的解决方案?

4

1 回答 1

3

我没有对此进行测试,但这似乎是您想要的:

double higherd = Math.Max(mydexterity, oppdexterity);
double lowerd  = Math.Min(mydexterity, oppdexterity);

//(500%-100%)/100% * 25% = 400%/100% * 25% = 4* 25% = 100%
double d_hitchance = (higherd - lowerd) / (lowerd) * 0.25D;

double higher_hitchance = d_hitchance * 0.1D + 0.9D;

double lower_hitchance = 0.9D - d_hitchance * 0.9D;

double myhitchance = (mydexterity==higherd)? higher_hitchance : lower_hitchance;
double opphitchance = (oppdexterity==higherd)? higher_hitchance : lower_hitchance;

当差异超过 500% 时,您可能必须将机会限制在 0 和 1.0 之间

于 2013-07-23T11:13:12.717 回答