在基于时间乘法和的游戏中,我使用以下等式计算正确答案的百分比:
//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个。
我该怎么做?
答案 0 :(得分:0)
有很多方法可以做到这一点。由于没有人知道你如何计算得分,你可以建立自己的逻辑。
在你的情况下,你可以拿这个百分比并乘以分数。和/或每10分加一个常数,比如2.因此50/100会给用户2 * 5(作为50的附加分数)+ 50/100。
我也使用关税,解决的问题越多,得分越高。只是一些想法。答案 1 :(得分:0)
您可以实现此目的的一种方法是在特定时间范围内回答目标数量的问题,并对每个错误答案进行惩罚。这看起来像是:
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
的首发。或者,它可以是您根据某些外部标准给出函数的参数。
此appraoch的优势在于可以根据您从用户预期的能力中获得的某些指标进行调整。