【问题标题】:Most likely sum of two dices最有可能的两个骰子的总和
【发布时间】:2019-06-22 20:40:56
【问题描述】:

我有两个骰子,用户可以在其中选择面数。我想编写一个代码来输出最有可能的结果。例如,如果用户选择了 2 个 6 面骰子,那么结果应该是 7。但是如果用户选择了 1 个 3 面骰子和 1 个 4 面骰子,那么输出应该是 4 和 5。我看过你计算的例子每个不同的总和在不同循环中的可能性有多大,但我想知道是否有更简单的方法,因为我只关心最有可能的总和,而不是所有总和。

任何建议或帮助将不胜感激!

编辑。由于有人抱怨需要阅读不必要的代码,因此打印出我所做的所有不同尝试并不值得赞赏,因此我会将您链接到我尝试过的不同示例,但随后删除,因为它们似乎对我的问题来说太长了. https://coderanch.com/t/517923/java/Dice-probability-program-nested-loops 我意识到该示例不适合,因为这需要我无法确定的滚动数量。然后我尝试通过使用 while 循环简单地尝试所有不同的可能组合,但我被困在中间,因此选择不使用它。

现在我只有:

Scanner scanner = new Scanner (System.in);
while (scanner.hasNextInt()) {
int x,y;
x=scanner.nextInt();
y=scanner.nextInt();
if (x==y) {
int z = x+1; 
System.out.println(z)
} else {
int z= ((x+y)/2)+1;
System.out.println(z);
}
}

问题:如果有两个不同数量的面,变量 z 只打印出总和中同样可能出现的一个。

【问题讨论】:

  • dice 这个词已经是die 的复数形式。只是想纠正你的语法。
  • 你已经尝试过什么代码?
  • 严格来说,只返回 5 是解决您的问题的最简单和正确的答案。您想计算不同数量的边数和/或骰子的结果吗?
  • 我希望用户能够选择两个骰子的边数,所以我想计算最可能的结果,因为每个用户输入的结果都不同!
  • @a.e.m.n 如果您希望输出为“4 和 5”,您应该以不同的方式表达您的问题。就目前而言,4 或 5 都是正确答案。

标签: java dice


【解决方案1】:

设 a 和 b 为边数,并假设 a 小于(或等于)b。那么 a+1 和 b+1 之间的所有和具有相同的可能性(a/(a+b))并且该可能性也是最大的。您希望如何在代码中返回它取决于您。

【讨论】:

  • 非常感谢您的所有帮助,当您是新手并找到一个看起来很容易的有趣问题时,这很困难.. 但如果您是新手,就不是这样了。再次感谢!
  • a=3, b=6 都是 4 和 7 的总和?你的说法可能是对的。我问这个问题,因为我不明白。
  • 是的,4 = 3+1 = 2+2 = 1+3、5 = 4+1 = 3+2 = 2+3 到 7 = 6+1 = 5+2 = 4 +3 都有 3 种可能性,因此发生的概率为 3/21 = 1/7。
  • @snr 更正:概率 3/18 = 1/6。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 2020-06-06
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 2018-01-16
  • 2015-07-03
相关资源
最近更新 更多