//ChangeExpected.java //experimnetally determine expected coin change import java.awt.*; import javax.swing.*; public class ChangeExpected extends JApplet { public void init() { String input = JOptionPane.showInputDialog( "Enter number of trials" ); int trials = Integer.parseInt(input); int charge, quarters, dimes, nickels, pennies; quarters = dimes = nickels = pennies = 0; double eQuarters, eDimes, eNickels, ePennies; double eQCents, eDCents, eNCents, ePCents; double eTotalCents; for (int i=1; i<=trials; i++) { charge = (int)(Math.random()*100); //uniformly distributed 0..99 //int origCharge = charge; //debug //quarters = dimes = nickels = pennies = 0; while (charge >= 25) { //<=3 iterations quarters++; charge -= 25; } while (charge >= 10) { //<=2 iterations dimes++; charge -= 10; } while (charge >= 5) { //<= 1 iteration nickels++; charge -= 5; } pennies += charge; // JOptionPane.showMessageDialog(null,"$= "+origCharge+" Q="+ //quarters+" D="+dimes+" N="+nickels+" P="+pennies); } eQuarters = (double)quarters / trials; eQCents = eQuarters*25; eDimes = (double)dimes / trials; eDCents = eDimes*10; eNickels = (double)nickels / trials; eNCents = eNickels*5; ePennies = (double)pennies / trials; ePCents = ePennies; eTotalCents = eQCents+eDCents+eNCents+ePCents; JOptionPane.showMessageDialog(null,"#Quarters= "+eQuarters+" ¢"+eQCents+"\n"+ "#Dimes= "+eDimes+" ¢"+eDCents+"\n"+ "#Nickels= "+eNickels+" ¢"+eNCents+"\n"+ "#Pennies= "+ePennies+" ¢"+ePCents+"\n"+ " total ¢"+eTotalCents); } } /* Q=1.5 .37 D= .8 .08 N= .4 .02 P=2.0 .02 .495 */