有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java模拟一枚硬币抛三次,并打印出其中一枚硬币有三条尾巴的情况的百分比

附件是问题:http://puu.sh/42QtI/ea955e5bef.png

就代码而言,这就是我目前掌握的

这个问题要求“计算三条尾巴的模拟百分比”,这是我一直坚持的部分。有人能告诉我下一步的进展吗

public static boolean isThreeTails(){
            Random rand = new Random();
            int numberOfTosses = 3;
            int numberOfHeads = 0;
            int numberOfTails = 0;

            for(int i = 1; i <= numberOfTosses; i++){
                int value = rand.nextInt(2);
                if(value == 0){
                    numberOfTails++;
                }else{
                    numberOfHeads++;
                }
            }
            if(numberOfTails == 3){
                return true;
            }
            else{
                return false;
            }
        }

double numTosses = 1000000; //choose whatever here
        double threeTails = 0;
        for(int i =0; i < numTosses; i++){
            if(isThreeTails()){
                 threeTails++;
            }
        }
        System.out.println("Theoretical probability of 3 Tails: " + (double) 1/8);
        System.out.println("Actual results for " + numTosses + " tosses = " + threeTails/numTosses);

编辑:在这里,我创建了一个计数器,当有三个尾巴。它将增加numberOfTripleTails计数器。如果它滚动一个“H”,那么numberOfTails将返回到零。然而,我的代码似乎只给出“3”作为答案

编辑2:完成


共 (3) 个答案

  1. # 1 楼答案

    好的,你已经运行了你的模拟,你有你的头数和尾数的值。现在你需要再跑几次

    每次运行模拟时,增加一个变量,该变量跟踪运行模拟的总次数。如果尾数为3,则增加另一个变量:我们称之为成功

    问题的结果是模拟运行的总时间内的成功

  2. # 2 楼答案

    问题是,“理论上,你应该在八分之一的时间里得到三条尾巴”。现在它在说,“好吧,你知道这个理论,现在在电脑上做这个,看看你真正得到了什么。”

    你要做的是多次运行这段代码,并记录你得到3条尾巴的次数。把这个数字除以你运行代码的总次数。这应该是模拟的百分比

    以防你说不出来,我是说在代码中这样做,而不是通过反复手动运行当前代码。下面是一些伪代码:

    threeTailsCount = 0
    for i = 0; i < 1000; i++
      if currentCodeReturns3Tails
        threeTailsCount += 1;
    
    print (threeTailsCount / 1000)
    
  3. # 3 楼答案

    您已经编写的方法模拟了三次投掷。我已经修改了这个方法,所以它现在是一个可调用函数isThreeTails()

    public static boolean isThreeTails(){
        Random rand = new Random();
        int numberOfTosses = 3;
        int numberOfHeads = 0;
        int numberOfTails = 0;
    
        for(int i = 1; i <= numberOfTosses; i++){
            int value = rand.nextInt(2);
            if(value == 0){
                numberOfTails++;
            }else{
                numberOfHeads++;
            }
        }
        if(numberOfTails == 3){
            return true;
        }
        else{
            return false;
        }
    }
    

    现在您需要从ThreeTosses.java的主方法调用这个方法

    double numTosses = 100; //choose whatever here
    double threeTails = 0;
    for(int i =0; i < numTosses; i++){
        if(isThreeTails()){
             threeTails++;
        }
    }
    System.out.println("Theoretical probability of 3 Tails: " + (double) 1/8);
    System.out.println("Actual results for " + numTosses + " tosses = " + threeTails/numTosses);