Monte Carlo Pi Estimation
by Santiago J
HTML
<pre id="output"></pre>
JavaScript
function estPi(N) {
var p = 0;
for (var i = 0; i < N; i++) {
var x = Math.random();
var y = Math.random();
if (x*x + y*y <= 1) p++;
}
return 4 * p / N;
}
function estPiUniform(N) {
var p = 0;
var M = (N-1)*(N-1);
for (var x = 0; x < N; x++) {
for (var y = 0; y < N; y++) {
if (x*x + y*y <= M) p++;
}
}
return 4 * p / (N*N);
}
function log(str) {
if (console) console.log(str);
var el = document.querySelector("#output");
if (el) el.textContent += "\n" + str;
}
function time(fn, args) {
var t1 = Date.now();
var ret = fn.apply(null, args);
var t2 = Date.now();
var dt = (t2 - t1) / 1000;
log(fn.name + "(" + args.join(", ") + ") = " + ret);
log("time: " + dt + "s");
}
time(estPi, [100000000]);
time(estPiUniform, [40000]);