我正试图想出一种基于整数个“点”达到“得分”的方法,该点可以使用少量(3-5?)的参数进行调整。优选地,在电子表格中合理地输入函数/计算以便由“设计者”(不是程序员或数学家)调整参数将是足够简单的。第一个点具有最大值,并且最终附加点具有固定或接近固定的值。从点值的初始斜率到最终斜率的过渡将是平滑。请参阅下面的示例形状。
对于参数,理想的例子是:
10
3
是:5
0.75
曲线的精确形状不太重要,只要角落可以更光滑或更多锐利。
这不适用于游戏,但更多具有多个组件的评级系统(其中一些可能使用此类比例)将被合并。
对于SO / SE来说,这似乎是一个非传统的问题。在我的职业生涯中,我已经完成了大部分财务软件,我希望有一些领域的智慧可以用于我可以利用的这类事情。
答案 0 :(得分:1)
参数:
你的衰减率是b / a。从这里开始很简单:迭代你的值,在每一步应用衰变,直到你“钉住”最小值:
x[n] = max( z, a * (b/a)^n )
// Take the larger of the computed "decayed" value,
// and the specified minimum.
序列 x 是您的值列表。
如果希望整数达到某一点,也可以截断中间结果。只需将 floor 函数应用于每个计算值,但如果它太小,仍允许 z 覆盖它。
这够好吗?我知道衍生函数存在不连续性,如果最小值和衰减不能很好地对齐,这将是显而易见的。您可以使用相对衰减进行调整,将指数衰减曲线从y = 0转换为 z 。
base = z
diff = a-z
ratio = (b-z) / diff
x[n] = z + diff * ratio^n
在这种情况下,您不需要 max 函数,因为衰减的自然渐近线为0。