Computer Science 202
Introduction to Programming
Fall 2013, The College of Saint Rose
MonteCarloPiVisual Demo
A working demo of MonteCarloPiVisual will appear below. Click inside the applet to interact with it.
MonteCarloPiVisual BlueJ Project
Click here to download a BlueJ project for MonteCarloPiVisual.
MonteCarloPiVisual Source Code
The Java source code for MonteCarloPiVisual is below. Click on a file name to download it.
import objectdraw.*;
import java.awt.*;
import java.util.Random;
import javax.swing.JOptionPane;
/*
* Example MonteCarloPiVisual: a visual version of a program that can
* compute an approximation of pi with a Monte Carlo method.
*
* Jim Teresco, The College of Saint Rose, CSC 202, Fall 2013
*
* $Id: MonteCarloPiVisual.java 2245 2013-11-06 06:54:27Z terescoj $
*/
public class MonteCarloPiVisual extends WindowController {
private static final int CANVAS_SIZE = 500;
public void begin() {
// make sure we have a large enough canvas
setSize(CANVAS_SIZE, CANVAS_SIZE+50);
// draw a FramedOval to fill the canvas
FramedOval target = new FramedOval(0, 0, CANVAS_SIZE, CANVAS_SIZE, canvas);
// find out how many trials to use
String response = JOptionPane.showInputDialog("How many points to use?");
int numPoints = Integer.parseInt(response);
// create our Random object to generate the positions
Random randGen = new Random();
// keep track of the number of positions inside the target
int hits = 0;
// perform our trials
for (int trialNum = 0; trialNum < numPoints; trialNum++) {
Location spot = new Location(CANVAS_SIZE*randGen.nextDouble(), CANVAS_SIZE*randGen.nextDouble());
FilledOval dart = new FilledOval(spot, 2, 2, canvas);
if (target.contains(spot)) {
hits++;
dart.setColor(Color.green);
}
else {
dart.setColor(Color.red);
}
}
target.sendToFront();
// our pi approximation
double apxPi = (double)hits / numPoints * 4;
JOptionPane.showMessageDialog(null,"Our approximation of pi: " + apxPi);
}
}