Monte Carlo methods: Difference between revisions
Content added Content deleted
(→{{header|Haskell}}: Applied Ormolu to older version, and replaced its 'foldl (+) 0' with sum) |
|||
Line 1,300: | Line 1,300: | ||
monteCarloPi :: Int -> IO Double |
monteCarloPi :: Int -> IO Double |
||
monteCarloPi n = |
monteCarloPi n = |
||
foldM go 0 [1 .. n] |
|||
>>= (pure . (/ fromIntegral n) . (4 *) . fromIntegral) |
|||
where |
where |
||
rnd = randomRIO (0, 1) :: IO Double |
rnd = randomRIO (0, 1) :: IO Double |
||
Line 1,308: | Line 1,308: | ||
| 1 > x ** 2 + y ** 2 = succ |
| 1 > x ** 2 + y ** 2 = succ |
||
| otherwise = id |
| otherwise = id |
||
go a x = do |
|||
go a x = |
|||
rnd >>= (\rx -> rnd >>= (pure . flip (f rx) a)) |
|||
return $ f rx ry a |
|||
main :: IO () |
main :: IO () |