【问题标题】:Simulation of rolling 2 dice for snake eyes and calculation of average in JAVA模拟蛇眼掷2个骰子并在JAVA中计算平均值
【发布时间】:2018-04-24 06:29:28
【问题描述】:

所以我必须编写一个模拟两个骰子滚动 1000 次的 for 循环,并计算蛇眼发生的平均值。 到目前为止,我得到了:

public class RollDiceforloop {
    public static void main(String[] args) {

        int die1, die2, snakeye, rolls;
        snakeye = 0;

        die1 = 0;
        die2 = 0;

        for (rolls = 0; rolls < 1000; rolls++) {
            die1 = (int)(Math.random() * 6) + 1;
            die2 = (int)(Math.random() * 6) + 1;
            if (die1 != 1 && die2 != 1); {

            }
            if (die1 == 1 && die2 == 1) {
                snakeye +=1;
            }
        }
        TextIO.putln(""+snakeye+" snake eyes over "+rolls+" rolls of the dice.");
    }
}

我还没有计算平均值,因为我想确保我做对了。我的蛇眼数量非常少...我的 for 循环正确吗?

【问题讨论】:

  • 你得到了什么样的低数字,你期望什么?
  • 30 左右?
  • 我得到了 19、23... 27... 之类的东西,只是想确保它是正确的。
  • @ChrisVieulles 这听起来对我来说是正确的
  • 赔率是 1/36,所以预期大约是 27.7。

标签: java loops for-loop simulation


【解决方案1】:

它是人工的,但使用的是 Java8

System.out.println(IntStream.range(0, 1000)               
                .mapToObj(x -> new Tuple((int)(Math.random() * 6) + 1, (int)(Math.random() * 6) + 1))
                .filter(x -> x.a == 1 && x.b == 1)
                .count()); 

public static class Tuple
    {
        final int a;
        final int b;
        Tuple(int a, int b)
        {
            this.a = a;
            this.b = b;
        }
    }

【讨论】:

  • 感谢您的回答,但我必须使用 for 循环编写代码。与我目前所写的非常接近,除了这个我无法弄清楚的平均值。
【解决方案2】:

我认为您的循环运行良好,并为两个骰子 1000 次生成一个随机数 并且您以奇怪的方式计算时间数(它会起作用但不会有效)更好地这样做,我也计算平均值

public class RollDiceforloop {
    public static void main(String[] args) {
        int die1, die2, snakeye, rolls;
        snakeye = 0;

        die1 = 0;
        die2 = 0;

        for (rolls = 0; rolls < 1000; rolls++) {
            die1 = (int) (Math.random() * 6) + 1;
            die2 = (int) (Math.random() * 6) + 1;
            if (die1 == 1 && die2 == 1) {
                snakeye += 1;
            }
        }
        TextIO.putln("" + snakeye + " snake eyes over " + rolls + " rolls of the dice.");
        TextIO.putln("" + snakeye / 1000.0 + " the average for  " + rolls + " rolls of the dice.");
    }
}

【讨论】:

  • 感谢您的回答。尽管在您所写的内容中,平均值等于 0,因为这两个变量都是 int。
  • 对此感到抱歉..我没有注意到..我编辑了它,但通常你的循环运行良好,但重新编写 if 是错误的
猜你喜欢
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 2017-02-23
  • 2020-06-06
  • 2015-12-09
  • 1970-01-01
  • 2021-11-03
相关资源
最近更新 更多