流れも読まずminからmaxまでのランダムな数のリスト(要素数n)を得る関数作って見た。

takerand _ _ xs 0 = return xs
takerand mn mx xs n = do
x <- randomRIO (mn, mx)
takerand mn mx (x:xs) (n - 1)

使い方は

rs <- takerand 1 6 [] 10

これで1ー6までのランダムな数が10個入ったリストが手に入る。