MonteCarlo.java.html

  1  import java.util.Random;
  2  
  3  /**
  4     This program computes an estimate of pi by simulating dart throws onto a square.
  5  */
  6  public class MonteCarlo
  7  {
  8     public static void main(String[] args)
  9     {  
 10        final int TRIES = 10000;
 11        Random generator = new Random();
 12  
 13        int hits = 0;
 14        for (int i = 1; i <= TRIES; i++)
 15        {  
 16           // Generate two random numbers between -1 and 1
 17  
 18           double r = generator.nextDouble();
 19           double x = -1 + 2 * r; 
 20           r = generator.nextDouble();
 21           double y = -1 + 2 * r;         
 22  
 23           // Check whether the point lies in the unit circle
 24  
 25           if (x * x + y * y <= 1) { hits++; }
 26        }
 27  
 28        /*
 29           The ratio hits / tries is approximately the same as the ratio 
 30           circle area / square area = pi / 4
 31        */        
 32  
 33        double piEstimate = 4.0 * hits / TRIES;
 34        System.out.println("Estimate for pi: " + piEstimate);
 35     }
 36  }