0

附上问题: 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:完成!

4

3 回答 3

2

好的 - 你已经运行了你的模拟并且你有你的正面数量和反面数量的价值。现在您需要再运行一些。

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

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

于 2013-08-15T17:17:30.050 回答
1

问题是说,“理论上,你应该有 1/8 的时间得到 3 个尾巴”。现在它说,“好吧,你知道理论,现在在电脑上实际做这个,看看你真正得到了什么。”

您要做的是多次运行此代码并跟踪获得 3 个尾巴的次数。把这个数字除以你运行代码的总次数。那应该是模拟百分比。

以防你不知道,我说的是在代码中执行此操作,而不是通过一遍又一遍地手动运行当前代码。这是一些伪代码:

threeTailsCount = 0
for i = 0; i < 1000; i++
  if currentCodeReturns3Tails
    threeTailsCount += 1;

print (threeTailsCount / 1000)
于 2013-08-15T17:17:56.057 回答
1

您已经编写的方法模拟了三个折腾。我已经修改了那个方法,使它现在是一个可调用的函数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;
    }
}

现在你会想从 main 方法调用这个方法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);
于 2013-08-15T17:35:35.647 回答