import java.util.Random; /** This program computes an estimate of pi by simulating dart throws onto a square. */ public class MonteCarlo { public static void main(String[] args) { final int TRIES = 10000; Random generator = new Random(); int hits = 0; for (int i = 1; i <= TRIES; i++) { // Generate two random numbers between -1 and 1 double r = generator.nextDouble(); double x = -1 + 2 * r; r = generator.nextDouble(); double y = -1 + 2 * r; // Check whether the point lies in the unit circle if (x * x + y * y <= 1) { hits++; } } /* The ratio hits / tries is approximately the same as the ratio circle area / square area = pi / 4 */ double piEstimate = 4.0 * hits / TRIES; System.out.println("Estimate for pi: " + piEstimate); } }