/Users/cappello/NetBeansProjects/56/56-MonteCarloPi/src/MonteCarloJPanel.java |
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
Displays a Monte Carlo approximation of Pi.
@author
public class MonteCarloJPanel extends JPanel
{
private int numExperiments = 100000;
private int numInCircle;
private final static int OFFSET = 5;
private final static int NUM_PIXELS = 600;
@Override
protected void paintComponent( Graphics graphics )
{
super.paintComponent( graphics );
numInCircle = 0;
Color color;
for ( int experimentNum = 0; experimentNum < numExperiments; experimentNum++ )
{
double x = Math.random();
double y = Math.random();
int xInt = (int) ( x * NUM_PIXELS );
int yInt = (int) ( y * NUM_PIXELS );
x = 2 * x - 1;
y = 2 * y - 1;
if ( x * x + y * y <= 1.0 )
{
numInCircle++;
color = Color.red;
}
else
{
color = Color.blue;
}
graphics.setColor( color );
graphics.fillRect( OFFSET + xInt, OFFSET + yInt, 1, 1 );
}
graphics.setColor( Color.black );
graphics.drawRect(OFFSET, OFFSET, NUM_PIXELS, NUM_PIXELS );
graphics.drawOval(OFFSET, OFFSET, NUM_PIXELS, NUM_PIXELS);
double pi = 4.0 * numInCircle / numExperiments;
graphics.drawString("PI = " + pi, 2 * OFFSET, NUM_PIXELS + 5 * OFFSET );
}
}