// 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(" %");	}	}
