packages feed

PlayHangmanGame-0.2: src/GameRandom.hs

module GameRandom 
  (randomRange) where

import System.Random
import qualified Data.Set as S

type Count      = Int
type UpperLimit = Int
type RandomSet  = S.Set Int

-- | Generate `Count` size Int list.
randomRange :: Count -> UpperLimit -> IO [Int]
randomRange c u = do
                  rs <- genNewRandom c u (S.fromList [])
                  return (S.toList rs)

genNewRandom :: Count -> UpperLimit -> RandomSet -> IO RandomSet
genNewRandom c u rs 
  | S.size rs == c    = return rs
  | otherwise         = do
                        i <- getRandom u 
                        genNewRandom c u (S.insert i rs)

getRandom :: UpperLimit -> IO Int
getRandom ul = getStdRandom (randomR (1,ul))