monad-bayes-1.1.0: test/TestSampler.hs
module TestSampler where
import qualified Control.Foldl as Fold
import Control.Monad (replicateM)
import Control.Monad.Bayes.Class (MonadDistribution (normal))
import Control.Monad.Bayes.Sampler.Strict (sampleSTfixed)
import Control.Monad.ST (ST, runST)
testMeanAndVariance :: Bool
testMeanAndVariance = isDiff
where
m = runST (sampleSTfixed (foldWith Fold.mean (normal 2 4)))
v = runST (sampleSTfixed (foldWith Fold.variance (normal 2 4)))
foldWith f = fmap (Fold.fold f) . replicateM 100000
isDiff = abs (2 - m) < 0.01 && abs (16 - v) < 0.1