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

时间:2015-01-31 03:07:24

标签: python math

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

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

2 个答案:

答案 0 :(得分:1)

怎么样:

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 /分数反转为得分/ 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

答案 1 :(得分:1)

那只是分裂。 :)

attack_delay = 200 / speed

现在使用speed = 100,攻击间隔两秒钟。使用speed = 50,您的攻击间隔时间为4秒。 speed = 200每秒攻击一次。