Monte Carlo methods: Difference between revisions

m
Line 1,298:
<lang haskell>import Control.Monad (foldM, (>=>))
import System.Random (randomRIO)
 
------- APPROXIMATION TO PI BY A MONTE CARLO METHOD ------
 
monteCarloPi :: Int -> IO Double
Line 1,305 ⟶ 1,307:
where
rnd = randomRIO (0, 1) :: IO Double
go a x = rnd >>= (\rx -> rnd >>= (pure . flip (f rx) a))
f x y
| 1 > x ** 2 + y ** 2 = succ
| otherwise = id
 
--------------------------- TEST -------------------------
go a x =
rnd >>= (\rx -> rnd >>= (pure . flip (f rx) a))
 
main :: IO ()
main =
9,655

edits