// CS 1538 Fall 2009 // Simple demonstration of Monte Carlo simulation to test the "Let's Make // a Deal" problem import java.util.*; public class MontyMonte { public static void main(String [] args) { int iter = Integer.parseInt(args[0]); Random r = new Random(); int winsA = 0; int winsB = 0; for (int i = 0; i < iter; i++) { // Without loss of generality, player will always initially // guess curtain 0 int guessA = 0, guessB = 0; int winner = r.nextInt(3); // Pick random winning curtain int loser; if (winner == 1) // Pick "wrong" curtain to reveal loser = 2; else if (winner == 2) loser = 1; else loser = r.nextInt(2) + 1; // Winner is 0, so pick // "loser" at random between 1 and 2 if (loser == 1) // Player switches guess after guessB = 2; // reveal else guessB = 1; if (winner == guessA) winsA++; if (winner == guessB) winsB++; } double pctA = (double)winsA / iter; double pctB = (double)winsB / iter; System.out.println("Non-switch pct. = " + pctA); System.out.println("Switch pct. = " + pctB); } }