module Terminal.Game.Random ( R.StdGen,
                              Random,
                              R.getStdGen,
                              R.mkStdGen,
                              getRandom,
                              getRandomList )
            where

import System.Random as R


-- getRandom :: (Ord a, Show a) => (a, a) -> StdGen -> (a, StdGen)
-- getRandom bs@(l, h) sg
--         | l > h     = error $ "getRandom: lowBound > highBoud, " ++ show bs
--         | otherwise = randomR _ _

-- | Simple pseudo-random generator.
getRandom :: Random a => (a, a) -> StdGen -> (a, StdGen)
getRandom :: (a, a) -> StdGen -> (a, StdGen)
getRandom (a, a)
bs StdGen
sg = (a, a) -> StdGen -> (a, StdGen)
forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
randomR (a, a)
bs StdGen
sg

-- | Returns an infinite list of random values.
getRandomList :: Random a => (a, a) -> StdGen -> [a]
getRandomList :: (a, a) -> StdGen -> [a]
getRandomList (a, a)
bs StdGen
sg = (a, a) -> StdGen -> [a]
forall a g. (Random a, RandomGen g) => (a, a) -> g -> [a]
randomRs (a, a)
bs StdGen
sg