Below is the syntax highlighted version of Gambler.java
from §1.3 Conditionals and Loops.
/************************************************************************* * Compilation: javac Gambler.java * Execution: java Gambler stake goal N * * Simulates a gambler who start with $stake and place fair $1 bets * until she goes broke or reach $goal. Keeps track of the number of * times she wins and the number of bets she makes. Run the experiment N * times, averages the results, and prints them out. * * % java Gambler 50 250 1000 * Percent of games won = 19.0 * Avg # bets = 9676.302 * * % java Gambler 50 150 1000 * Percent of games won = 31.9 * Avg # bets = 4912.13 * * % java Gambler 50 100 1000 * Percent of games won = 49.6 * Avg # bets = 2652.352 * *************************************************************************/ public class Gambler { public static void main(String[] args) { int stake = Integer.parseInt(args[0]); // gambler's stating bankroll int goal = Integer.parseInt(args[1]); // gambler's desired bankroll int N = Integer.parseInt(args[2]); // number of trials to perform int bets = 0; // total number of bets made int wins = 0; // total number of games won // repeat N times for (int i = 0; i < N; i++) { // do one gambler's ruin simulation int t = stake; while (t > 0 && t < goal) { bets++; if (Math.random() < 0.5) t++; // win $1 else t--; // lose $1 } if (t == goal) wins++; // did gambler go achieve desired goal? } // print results System.out.println(wins + " wins of " + N); System.out.println("Percent of games won = " + 100.0 * wins / N); System.out.println("Avg # bets = " + 1.0 * bets / N); } }