13 lines
385 B
Haskell
13 lines
385 B
Haskell
import Control.Monad
|
|
import System.Random
|
|
|
|
getPi throws = do
|
|
results <- replicateM throws one_trial
|
|
return (4 * fromIntegral (sum 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)
|