0

我有一个任务,我正在尝试使用嵌套的 for 循环来完成,但我似乎无法弄清楚我该如何做到这一点。

我需要:

编写一个程序来模拟掷一对 11 面骰子,并确定掷骰子的每种可能组合的次数百分比。要求用户输入掷骰子的次数。计算每个骰子组合的概率。

我不太了解如何处理卷的结果(我已经弄清楚了),这是我在代码中的位置:

for(int x = 0; x < total_rolls; x++){
      int result = roll(sides); //roll(sides) gets two random ints under 12, then adds them together

    }
4

1 回答 1

1

听起来您想计算骰子值组合的频率(出现次数)。

您可以创建一个尺寸为 11x11 的矩阵。每当您6掷骰子 1 和10骰子 2 之类的组合时,都会增加矩阵中的该单元格。您可以将此矩阵视为直方图。

然后通过从矩阵中读取一个条目并将其除以total_rolls

这可能看起来像这样

int[][]histogram = new int[11][11];
for(int x = 0; x < total_rolls; x++){
  int dice1 = roll(sides); //result of dice 1 (1-11)
  int dice2 = roll(sides); //result of dice 2 (1-11)
  histogram[dice1-1][dice2-1]++; //increment the frequency of this event
}

double prob = 1.0*histogram[5][9]/total_rolls; //probability of combination (6,10)

需要注意两个细节,java 中的数组是 0 索引的。两个整数的除法也得到一个整数,所以我们通过乘以双精度字面量 1.0 来将它作为一个双精度数和一个整数的除法;

于 2012-10-24T23:45:01.943 回答