packages feed

ansi-terminal-game-1.9.4.0: src/Terminal/Game/Random.hs

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

import System.Random as R


-- | Simple, pure pseudo-random generator.
getRandom :: UniformRange a => (a, a) -> StdGen -> (a, StdGen)
getRandom bs sg = uniformR bs sg

-- | Picks at random from list.
pickRandom :: [a] -> StdGen -> (a, StdGen)
pickRandom as sg = let l = length as
                       (a, sg') = getRandom (0, l-1) sg
                   in (as !! a, sg')