// Die.java // Written by Julian Devlin, 8/97, for the text book // "Introduction to Probability," by Charles M. Grinstead & J. Laurie Snell import java.applet.Applet; import java.awt.*; public class Die extends java.applet.Applet { TextArea disp; // Area to display HT Panel dispArea; Panel controls; // Panel for user controls Label numl; // Controls TextField num; Button go; GridBagLayout gbl; GridBagConstraints cc; JRandom myRand; // Initialize applet public void init() { numl = new Label("n ="); // Create controls num = new TextField("100", 4); go = new Button("Go"); disp = new TextArea(15, 20); // Create display area dispArea = new Panel(); // Set up window controls = new Panel(); setLayout(new BorderLayout(5, 5)); add("South", controls); add("Center", dispArea); dispArea.setLayout(new GridLayout(1, 1)); dispArea.add(disp); gbl = new GridBagLayout(); controls.setLayout(gbl); cc = new GridBagConstraints(); cc.gridx = 0; cc.gridy = 0; gbl.setConstraints(numl, cc); controls.add(numl); cc.gridx = 1; gbl.setConstraints(num, cc); controls.add(num); cc.gridx = 0; cc.gridy = 1; cc.gridwidth = 2; gbl.setConstraints(go, cc); controls.add(go); validate(); myRand = new JRandom(); } // 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 simulate(Integer.valueOf(num.getText()).intValue()); return true; // Generate correct number of tosses } } return super.handleEvent(evt); // Handle other events as usual } // Calculate probabilities public void simulate(int num) { int[] freq = {0, 0, 0, 0, 0, 0}; int total = 0; int temp; for (int i = 0; i < num; i++) { temp = myRand.nextInt(1, 6); freq[temp - 1]++; if (temp == 2 || temp == 4 || temp == 6) temp *= -1; total += temp; } disp.appendText("Winning Frequency Relative frequency\n\n"); disp.appendText("1 " + String.valueOf(freq[0]) + " " + String.valueOf((float) freq[0] / (float) num) + "\n"); disp.appendText("-2 " + String.valueOf(freq[1]) + " " + String.valueOf((float) freq[1] / (float) num) + "\n"); disp.appendText("3 " + String.valueOf(freq[2]) + " " + String.valueOf((float) freq[2] / (float) num) + "\n"); disp.appendText("-4 " + String.valueOf(freq[3]) + " " + String.valueOf((float) freq[3] / (float) num) + "\n"); disp.appendText("5 " + String.valueOf(freq[4]) + " " + String.valueOf((float) freq[4] / (float) num) + "\n"); disp.appendText("-6 " + String.valueOf(freq[5]) + " " + String.valueOf((float) freq[5] / (float) num) + "\n"); disp.appendText("Average win: " + String.valueOf((float) total / (float) num) + "\n"); } }