基本的に、1000回の試行を行う必要があります。各トライアルは、「景品付きボトルキャップ」をピッキングに成功したときです。そのため、その賞品を獲得するたびに、その 1 回の試行でその賞品を獲得するまでにボトル キャップを何回使用したかを確認する必要があります。最終的に出力することになっているのは、賞品のキャップを見つけるために通過しなければならなかったボトルのキャップの平均数です。
プログラムでその平均ボトル数を取得するのに苦労しており、それについて助けが必要です。私の平均は最終的には正しくありません。ファイルの入力と出力に関しては、それは割り当ての一部であり、私はすでにそれを理解しているので、そこに助けは必要ありません. もう 1 つ、最初の 2 行のコード outputFile.println は、プログラムが機能していることを確認するためのテストです。
import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
import java.util.Scanner;
import java.util.Random;
public class BottleCapPrize
{
public static void main(String [] args) throws IOException
{
PrintWriter outputFile = new PrintWriter(new File("MonteCarlo.txt"));
Random randNum = new Random();
int bottleCapNumber = 0;
int wins = 0;
int capsOpened = 0;
for(int i = 1; i <= 1000; i++)
{
bottleCapNumber = randNum.nextInt(5);
while(bottleCapNumber != 0)
{
bottleCapNumber = randNum.nextInt(5);
capsOpened++;
}
if(bottleCapNumber == 0)
{
capsOpened++;
wins++;
}
}
outputFile.println(capsOpened);
outputFile.println(wins);
int averageNumberOfBottles = (int)(((double)wins / (double)capsOpened) * 10);
outputFile.println("The average amount of bottles that need to be opened are: " + averageNumberOfBottles);
outputFile.close();
Scanner inputFile = new Scanner(new File("MonteCarlo.txt"));
while(inputFile.hasNextLine())
{
String token = inputFile.nextLine();
System.out.println(token);
}
inputFile.close();
}
}