      1  /**

      2     This program computes an estimate of pi by simulating dart throws onto a square.

      3  */

      4  public class MonteCarlo

      5  {

      6     public static void main(String[] args)

      7     {

      8        final int TRIES = 10000;

      9

     10        int hits = 0;

     11        for (int i = 1; i <= TRIES; i++)

     12        {

     13           // Generate two random numbers between -1 and 1

     14

     15           double r = Math.random();

     16           double x = -1 + 2 * r;

     17           r = Math.random();

     18           double y = -1 + 2 * r;

     19

     20           // Check whether the point lies in the unit circle

     21

     22           if (x * x + y * y <= 1) { hits++; }

     23        }

     24

     25        /*

     26           The ratio hits / tries is approximately the same as the ratio

     27           circle area / square area = pi / 4

     28        */

     29

     30        double piEstimate = 4.0 * hits / TRIES;

     31        System.out.println("Estimate for pi: " + piEstimate);

     32     }

     33  }