Monte Carlo methods: Difference between revisions

Content added Content deleted
m (→‎{{header|JavaScript}}: (minor normalisation of spacing – with JS beautify))
Line 923: Line 923:


=={{header|JavaScript}}==
=={{header|JavaScript}}==
===ES5===
<lang JavaScript>function mcpi(n) {
<lang JavaScript>function mcpi(n) {
var x, y, m = 0;
var x, y, m = 0;
Line 949: Line 950:
3.1417656
3.1417656
</pre>
</pre>

===ES6===
<lang JavaScript>(() => {
'use strict';

// monteCarloPi :: Int -> Float
const monteCarloPi = n => {

const rnd = Math.random;

return 4 * range(1, n)
.reduce(a => {
const [x, y] = [rnd(), rnd()];
return x * x + y * y < 1 ? a + 1 : a;
}, 0) / n;
}

// range :: Int -> Int -> [Int]
const range = (m, n) =>
Array.from({
length: Math.floor(n - m) + 1
}, (_, i) => m + i);

// TEST
return [1, 2, 3, 4, 5]
.map(_ => monteCarloPi(10000000));

// e.g. -> [3.141368, 3.1408992, 3.1412084, 3.142132, 3.1413012]
})();</lang>

{{Out}} (5 sample runs)
<lang JavaScript>[3.141368, 3.1408992, 3.1412084, 3.142132, 3.1413012]</lang>


=={{header|Julia}}==
=={{header|Julia}}==