11 lines
451 B
Haskell
11 lines
451 B
Haskell
import System.Random
|
|
import Control.Monad
|
|
|
|
get_pi throws = do results <- replicateM throws one_trial
|
|
return (4 * fromIntegral (foldl (+) 0 results) / fromIntegral throws)
|
|
where
|
|
one_trial = do rand_x <- randomRIO (-1, 1)
|
|
rand_y <- randomRIO (-1, 1)
|
|
let dist :: Double
|
|
dist = sqrt (rand_x*rand_x + rand_y*rand_y)
|
|
return (if dist < 1 then 1 else 0)
|