【发布时间】:2013-01-01 22:11:59
【问题描述】:
我正在尝试编写一个程序来计算体育预测游戏的分数。与游戏相关的处罚之一是,您每错过正确的分数,就会从您的分数中减去一分。
例如,您预测 A 队将以 17-0 的比分击败 B 队,但最终比分是 10-14。这意味着您损失了 21 分,因为您预测 B 队的胜利优势是 17 分,而实际上真实的优势是 A 队落后 4 分。
另一个例子,您预测 B 队将以 35-3 的比分击败 A 队。在这种情况下,同样使用上面的最终分数,您只会损失 28 分。
当我测试该程序时,我发现它通常在玩家预测正确的球队获胜时起作用。我知道代码中的问题是处理这种胜利边际惩罚,但 我不明白为什么它有时会给我正确的分数,而其他时候却没有。 p>
// Calculate actual margin of victory
margin1 = team1score - team2score;
if (margin1 < 0) {
margin1 = margin1 * -1;
}
// Calculate predicted margin of victory
margin2 = prediction2 - prediction1;
if (margin2 < 0) {
margin2 = margin2 * -1;
}
// Calculate difference
if (margin1 == margin2) {
totalMargin = 0;
} else {
totalMargin = margin1 - margin2;
if (totalMargin < 0) {
totalMargin = totalMargin * -1;
}
}
谢谢。
【问题讨论】:
-
嗯...我不懂java,但你的逻辑看起来很古怪。
-
与其乘以
-1,不如直接乘以abs(margin1 - margin2)?你能解释一下你做了什么让它给你错误的分数吗? -
@Blender 我把这个游戏从论坛上拿了下来,只是使用了他们的结果。然而,在那场比赛中,他们每周预测多场比赛,并且只公布每个球员的最终得分。所以我必须计算每个星期的球员得分,并将它们相加得到最终得分。每次我这样做,我最多只落后10分,所以我假设这是因为胜利幅度的差异。