29 lines
881 B
Haskell
29 lines
881 B
Haskell
-- |
|
|
-- 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 #-}
|