wvogel日記

自分用の技術備忘録が多めです.

Monte Carlo

(?) :: (Ord a,Num a) => (a,a) -> Bool
(?) (x,y) = 1 > x^2 + y^2

pi' :: Fractional a => a
pi' = 4.0*fromIntegral (length $ filter (?) dots) / fromIntegral (length dots)

dots :: (Enum a,Fractional a) => [(a,a)]
dots = [(x,y) | x <- [0.01,0.02..1.0] , y <- [0.01,0.02..1.0]]

Monte Carlo法で円周率を計算。
ただ、桁落ちが甚だしくて3.1としか出ない.....

ghciによる定義では、
pi = 3.141592653589793