【问题标题】:Adjusting game score based on number of games played根据玩过的游戏数量调整游戏分数
【发布时间】:2014-08-26 20:23:11
【问题描述】:

在基于时间乘法和的游戏中,我使用以下公式来计算正确答案的百分比:

//logic for the % of answers correct
double divide = ((double) score / totalQuestions);
int percentageScore = (int) Math.round(divide * 100);

我想以某种方式对正确回答的问题总数进行加权。例如:

70/100 

的百分比相同
7/10

70/100 的总分应该更高,因为他们能够在规定时间内答对 70 个问题,而不是 7 个。

我应该怎么做?

【问题讨论】:

  • 这真的很接近“帮我完成这件事”
  • 真的不是,如果我能做到我会的
  • 我知道。我只是说“关闭”;)

标签: android math logic


【解决方案1】:

有很多方法可以做到这一点。由于没有人知道您是如何计算分数的,因此您可以构建自己的逻辑。

在您的情况下,您可以将该百分比乘以分数。和/或每 10 分添加一个常数,比如 2。所以 50/100 会给用户 2*5(作为 50 的附加分数)+ 50/100。

我也使用关税,解决的问题越多,得分越高。只是一些想法。

【讨论】:

    【解决方案2】:

    实现此目的的一种方法是在特定时间范围内设定目标数量的问题要回答,并对每个错误答案进行处罚。这看起来像:

    double score(double correct, double attempted, double time, double target_rate) {
        // Validate correct <= attempted, attempted > 0, correct >= 0, time > 0, target_rate > 0
        double penalty = Math.min(correct, PENALTY_RATE * (attempted - correct));
        return (correct - penalty) / (time * target_rate);
    }
    

    在这种情况下,time 是用户在您愿意考虑的任何时间单位(例如分钟数)内回答问题所花费的时间,target_rate 是您要考虑的目标问题数期望用户在该时间范围内的单个单位内正确回答而不会出错。 PENALTY_RATE 是一个常数值,可以是您决定的任何值,对于初学者来说可能是 0.25。或者,它可以是您根据某些外部标准为函数提供的参数。

    这种方法的优点是可以根据您从用户的预期能力得出的一些指标进行调整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多