| 'use strict' |
| |
| /* A simple π estimation function using a Monte Carlo method |
| * For 0 to `points`, take 2 random numbers < 1, square and add them to |
| * find the area under that point in a 1x1 square. If that area is <= 1 |
| * then it's *within* a quarter-circle, otherwise it's outside. |
| * Take the number of points <= 1 and multiply it by 4 and you have an |
| * estimate! |
| * Do this across multiple processes and average the results to |
| * increase accuracy. |
| */ |
| |
| module.exports = function (points, callback) { |
| let inside = 0 |
| , i = points |
| |
| while (i--) |
| if (Math.pow(Math.random(), 2) + Math.pow(Math.random(), 2) <= 1) |
| inside++ |
| |
| callback(null, (inside / points) * 4) |
| } |