// CoinTosses.java // This applet prints out random heads and tails, and keeps track // of the number of heads. // Written by Julian Devlin, 8/97, for the text book // "Introduction to Probability," by Charles M. Grinstead & J. Laurie Snell // Packages we need import java.awt.*; import java.applet.Applet; import java.util.Random; public class CoinTosses extends Applet //implements Runnable { TextArea disp; // Area to display HT Panel contp; // Panel for user controls Label numl; // Controls TextField num; Button go; Random randGen; // Random number generator // Initialize applet public void init() { numl = new Label("No. of flips"); // Create controls num = new TextField("100", 4); go = new Button("Go"); contp = new Panel(); // Set up control panel contp.add(numl); contp.add(num); contp.add(go); contp.setLayout(new FlowLayout()); disp = new TextArea(20, 30); // Create display area resize(500,400); // Set up applet setLayout(new FlowLayout()); add(disp); add(contp); validate(); randGen = new Random(); // Create random number generator } // Handle events public boolean handleEvent(Event evt) { if (evt.target instanceof Button) { if (evt.target == go && evt.id == Event.ACTION_EVENT) // When button is clicked { disp.setText(""); // Reset output window generate(Integer.valueOf(num.getText()).intValue()); return true; // Generate correct number of tosses } } return super.handleEvent(evt); // Handle other events as usual } // Generate n random coin tosses, and keep track of the number of heads public void generate(int n) { int count = 0; float randFloat; float percent; for(int i = 0; i < n; i++) { randFloat = randGen.nextFloat(); if (randFloat < .5) { disp.appendText("H"); // Determine Heads or Tails count++; } else disp.appendText("T"); if (i%30 == 29) // Wrap after 30 flips disp.appendText("\n"); } percent = ((float) count/ (float) n) * 100; // Do proportion disp.appendText("\n"); // print out disp.appendText(Integer.toString(count)); disp.appendText(" heads out of "); disp.appendText(Integer.toString(n)); disp.appendText(" = "); disp.appendText(Float.toString(percent)); disp.appendText(" %"); } }