rendered paste bodyimport java.util.*;
public class Tester
{
public static void main(String args[])
{
double cirCount=0;
double sqrCount=0;
double a=0,b=0;
boolean c = false;
MonteCarlo mcObj = new MonteCarlo(5,3,2);
for(int i=0;i<1000000;i++)
{
a=mcObj.nextRainDrop_x();
b=mcObj.nextRainDrop_y();
c=mcObj.insideCircle(a,b);
if(c==true)
cirCount++;
sqrCount++;
}
double side = Math.pow(MonteCarlo.r,2);
double n=(cirCount * (Math.pow(side,2)));
double m=(sqrCount*(Math.pow(MonteCarlo.r,2)));
double pi = n/m;
System.out.println(pi);
}
}
public class MonteCarlo
{
public MonteCarlo(double side_x, double side_y, double radius)
{
h=side_x;
k=side_y;
r=radius;
}
public double nextRainDrop_x()
{
double x_min = h-r;
double x_max = h+r;
double range_x = x_max - x_min;
double pos_x = x_min + range_x *rndm.nextDouble();
return pos_x;
}
public double nextRainDrop_y()
{
double y_min = k-r;
double y_max = k+r;
double range_y = y_max - y_min;
double pos_y = y_min + range_y * rndm.nextDouble();
return pos_y;
}
public boolean insideCircle(double x,double y)
{
double fpos_x = nextRainDrop_x();
double fpos_y = nextRainDrop_y();
double a = fpos_x-h;
double aa = Math.pow(a,2);
double b = fpos_y-k;
double bb = Math.pow(b,2);
double rad = Math.pow(r,2);
if(aa + bb <= rad)
return true;
else
return false;
}
public static double h;
public static double k;
public static double r;
private Random rndm = new Random();
}