-- | -- Module : Crypto.Random.Probabilistic -- License : BSD-style -- Maintainer : Vincent Hanquez <vincent@snarc.org> -- Stability : experimental -- Portability : Good -- module Crypto.Random.Probabilistic ( probabilistic ) where import Crypto.Internal.Compat import Crypto.Random.Types import Crypto.Random -- | This create a random number generator out of thin air with -- the system entropy; don't generally use as the IO is not exposed -- this can have unexpected random for. -- -- This is useful for probabilistic algorithm like Miller Rabin -- probably prime algorithm, given appropriate choice of the heuristic -- -- Generally, it's advised not to use this function. probabilistic :: MonadPseudoRandom ChaChaDRG a -> a probabilistic f = fst $ withDRG drg f where {-# NOINLINE drg #-} drg = unsafeDoIO drgNew {-# NOINLINE probabilistic #-}