package remote;
import java.util.Random;
public class Perf2 {
int repeats = 100;
public static void main(String[] args) {
time();
}
public static void time() {
long stime = System.currentTimeMillis();
System.out.println(computepi(1000000));
long etime = System.currentTimeMillis();
System.out.println("took "+(etime-stime)+"ms");
}
public static double computepi(int iterations) {
Random randomGen = new Random(System.currentTimeMillis());
int insideCount = 0;
for (int i = 1; i <= iterations; i++) {
insideCount += doOneIteration(randomGen);
}
return calc(iterations, insideCount);
}
private static int doOneIteration(Random randomGen) {
double xPos = getRandom(randomGen);
double yPos = getRandom(randomGen);
return isInside( xPos, yPos);
}
private static int isInside( double xPos, double yPos) {
double distance = Math.sqrt((xPos * xPos) + (yPos * yPos));
if (distance<1.0) return 1;
else return 0;
}
private static double getRandom(Random randomGen) {
return (randomGen.nextDouble()) * 2 - 1.0;
}
private static double calc(int iterations, int insideCount) {
return 4.0 * (insideCount / (double)iterations);
}
}