我正在尝试制作一个计算运动预测游戏分数的程序。与游戏相关的一个惩罚是,对于每个点你错过正确的边距,从你的分数中减去一个点。
例如,您预测A队将以17-0的比分击败B队,但最终得分为10-14。这意味着你失去了21分,因为你预测B队的胜利率会加17分,而事实上真正的边际让A队落后4分。
另一个例子,你预测B队将以35-3的比分击败A队。在这种情况下,同样使用上面的最终得分,你只会失去28分。
当我测试程序时,我发现它通常在玩家预测合适的团队获胜时起作用。我知道代码中的问题处理了这个胜利率的惩罚,但是我无法弄清楚为什么它有时会给我正确的分数,有时却没有。
// 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;
}
}
感谢。
答案 0 :(得分:1)
您的代码太复杂了。
总丢失点总是:
Math.abs( (prediction2 - prediction1) - (score2 - score1))
绝对是绝对值。