Monte Carlo methods: Difference between revisions
Content added Content deleted
m (→{{header|JavaScript}}: (minor normalisation of spacing – with JS beautify)) |
(→{{header|JavaScript}}: ES6) |
||
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}}== |