// DeMere2.java // This applet rolls a pair of dice in sets of 24 or 25, seeing if a // pair of sixes comes up in each set. // 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; public class DeMere2 extends Applet { TextArea disp; // Area to display percentage Panel contp; // Panel for user controls Label numl; // Controls TextField num; Button go24; Button go25; JRandom randGen; // Random number generator // Initialize applet public void init() { numl = new Label("No. of games"); // Create controls num = new TextField("30", 4); go24 = new Button("24 times"); go25 = new Button("25 times"); contp = new Panel(); // Set up control panel contp.add(numl); contp.add(num); contp.add(go24); contp.add(go25); contp.setLayout(new FlowLayout()); disp = new TextArea(10, 30); // Create display area setLayout(new FlowLayout()); add(disp); add(contp); validate(); randGen = new JRandom(); // Create random number generator } // Handle events public boolean handleEvent(Event evt) { if (evt.target instanceof Button) { if (evt.target == go24 && evt.id == Event.ACTION_EVENT) // When go24 is clicked { disp.setText(""); // Reset output window generate(Integer.valueOf(num.getText()).intValue(), 24); return true; // Generate correct number of games } else if (evt.target == go25 && evt.id == Event.ACTION_EVENT)// When go25 is clicked { disp.setText(""); // Reset output window generate(Integer.valueOf(num.getText()).intValue(), 25); return true; // Generate correct number of games } } return super.handleEvent(evt); // Handle other events as usual } // Generate n sets of set dice pairs, and print average wins (you get a pair of sixes) public void generate(int n, int sets) { int count = 0; int randInt1, randInt2; float percent; for(int i = 0; i < n; i++) // Num games { for(int j = 0; j < sets; j++) // Usually 24 or 25 { randInt1 = randGen.nextInt(6); randInt2 = randGen.nextInt(6); if (randInt1 == 6 && randInt2 == 6) { count++; // Double sixes j = sets; } } } percent = ((float) count/ (float) n) * 100; // Print disp.appendText(Float.toString(percent)); disp.appendText("% win rate."); } }