import ; import ; main(args(2)) := monteCarlo(stringToInt(args[1]), stringToInt(args[2])); monteCarlo(n, seed) := let totalHits := monteCarloHelper(n, seedRandom(seed), 0); in (totalHits / intToFloat(n))*4.0; monteCarloHelper(n, generator, result) := let xRand := getRandom(generator); x := xRand.Value/(generator.RandomMax + 1.0); yRand := getRandom(xRand.Generator); y := yRand.Value/(generator.RandomMax + 1.0); newResult := result + 1 when x^2 + y^2 < 1.0 else result; in result when n < 0 else monteCarloHelper(n - 1, yRand.Generator, newResult);