【问题标题】:Algorithmic scoring based on time基于时间的算法评分
【发布时间】:2023-03-23 13:20:01
【问题描述】:

我们希望创建一种评分算法,以更少的时间奖励更高的分数,并为更长的时间奖励更少的分数。需要注意的是,没有实际范围,因此时间范围可以从 100 毫秒到 10 分钟或更长,点范围为 0 到 50。

感谢您的帮助。

【问题讨论】:

    标签: algorithm math


    【解决方案1】:

    您可以使用以下等式简单地将其设为线性映射

    points = 50 * 100/time_in_ms

    这会给你:

    • time_in_ms=100ms => 50 积分
    • ...
    • time_in_ms=10min => 0.0083 积分
    • ...
    • time_in_ms=+∞ => 0 积分

    如果时间和点的范围发生变化,您可以轻松调整上述公式。

    【讨论】:

    • 有没有办法把这个点拉长,这样它们就不会这么快减少?在大约 5 秒时,我们下降到
    • 您可以取时间的对数或平方根并调整100。例如,如果您使用points = 50 * 10 / sqrt(time),您仍然会在 100 毫秒内获得 50 分,而 5 秒将获得大约 7 分。直到 250 秒或刚刚超过 4 分钟,它才会达到 1 分。
    【解决方案2】:

    您可以在应用线性映射之前以某种方式转换延迟,以便更早地更快地给出点并且稍后给出点。一种选择是采用到目前为止时间的对数。另一种选择是函数f(x) = Ax/(A + x),它在 x=0 时从 0 快速增加,但后来随着 x 的增加向 A 方向减慢,但从未完全达到它。 (这会增加并且您想要减少,但您可以使用线性函数来修复它 - 一个明显的例子是点 = A - Ax/(A + x))

    例如,如果你设置A=10 那么

    f(0) = 10 - 10*0/(10 + 0) = 10, 
    f(1) = 10 - 10/11 = 9 1/11, 
    f(2) = 10 - 20/12 = 8 1/3, 
    f(100) = 10 - 1000/110 = 10/11 
    

    等等。

    【讨论】:

    • 你能举个例子吗?
    • 我在答案中加了一个
    • 您提供的链接已损坏。
    • @Pratik 对此感到抱歉。我已删除该引用。 Demon 被 Vodaphone 接管,我最终放弃了他们的服务,我的网页也随之消失。事实上,我最终对自己发誓,我再也不会使用它们了,在付钱给他们之后,我认为他们不会因为采取法律行动的威胁而消失。我可能会追求它,但当时正忙着——我父亲快死了。
    • @Pratik 他快 94 岁了,他说 70 岁以后每年都算奖金,所以我想我不应该抱怨,但是有很多新的事情要担心,我没有不容易。谢谢你的同情。
    【解决方案3】:

    我认为你有两个选择:

    1. 如果您真的希望能够为任意时间长度分配分数,请选择一个公式,将分数除以时间长度,例如:

      points = [max_number_of_points]/[time]
      

      在这里,time 应该是最小的度量单位,因此它永远不会小于零。如果您不希望点数以该速度减少,请将time 除以或乘以某个常数,直到点数分布符合您的要求。

    2. 确定确实存在一个限制,即时间如此之长,以至于超过该时间的任何内容都应该得到零分。例如,我怀疑您是否关心时间为 1 亿年与 1000 亿年相比的点差。因此,以这种方式人为地选择一个最大时间,分配所有大于零的时间点,然后在有限范围内继续您的评分算法。

    【讨论】:

      【解决方案4】:

      如果记录集太大,这样的事情必须延迟一些时间才能完成。

      假设您在一段时间内跟踪max 值的流中持续获取每个用户花费的时间,并且您还有另一个动态评分系统。

      在以毫秒为单位的现有记录集的确定重复间隔后触发点的计算(可能存储在链表中,也可能是动态增长的二维数组。

      积分计算逻辑:

      我们清楚地将其视为所用时间的反线性关系。所以你知道所有时间值等于上面计算的平均值的记录在 1 - 50 的范围内得到 25。

      因此对于给定的记录假设 100 毫秒,最大值为 500 毫秒,答案将是 50 * (500 - 100 ) / 500

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-14
        • 2015-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多