试图找出一个奇怪的数学公式

trying to figure out a weird math formula

所以我正在根据我正在编写的程序的速度等级进行攻击超时,但在数学方面我不是天才。因为我有一个像这样的公式 speed = lambda x: x/50 基本额定速度默认为 100,所以攻击将在 speed(100) 每两秒发生一次。现在我想要的是攻击在更高的额定速度下发生得更快,而在较低的额定速度下发生得更慢。 IE。 speed(98) 会 return 大于 2,而 speed(101) 会 return 小于 2。这些数字只是示例,但要点是是否有一个公式可以return 基于较高基数的较小数字,反之亦然?

示例:speed(101); returns x < yspeed(98); returns x > y y 是常数,例如 2。

怎么样:

def speed(score, attacks_per_second):
    """
    computes actual attack speed for a player with `score`, 
    assuming a player with a score of 100 could attack at
    `attacks_per_second`.  Lower scores are better.
    """
    return attacks_per_second * (100 / score)
>>> speed (100, 2)
2.0
>>> speed (120, 2)
1.6666666666666667
>>> speed (80, 2)
2.5

编辑:因为我第一次看错了,你想要更高的分数来降低速度,将 100/score 倒置为 score/100。原文保存于此:

def speed_inverse(score, attacks_per_second):
    """
    as above, but higher scores are better
    """
    return attacks_per_second * (score / 100)
>>> speed (120, 2)
2.4
>>> speed (80, 2)
1.6

那只是分裂。 :)

attack_delay = 200 / speed

现在speed = 100,你将有两秒的攻击间隔。使用 speed = 50,您将有四秒的攻击间隔。 speed = 200 每秒攻击一次。