【问题标题】:Calculating margin-of-victory for a game计算游戏的胜率
【发布时间】: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分,所以我假设这是因为胜利幅度的差异。

标签: java math


【解决方案1】:

您的代码太复杂了。

总失分总是:

Math.abs(  (prediction2 - prediction1) - (score2 - score1))

abs 是绝对值。

【讨论】:

  • abs() 在课堂上Math
  • @Majid LAISSI 我不确定绝对值是否有效。当我尝试使用第一个示例分数进行此操作时,程序显示差异为 13 分。但是,实际上应该是 21 分,因为您预测 A 队对 B 队会得到 +17 分,但他们实际上得到了 -4 分。
  • 第一个例子 |( 17 - 0) - (10 -14)| = | 17 + 4 | = 21
  • 第二个例子 | (3-35) - (10-14)| = | -32 + 4| = | -28 | = 28
  • 是的,它确实有效,只需要将中间 - 更改为 +,谢谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多