blob: f85a87ae09ccedf5798fb6ee4a0c863a680ba437 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import System.Random
import Data.List
rnd_select :: [a] -> Int -> IO [a]
rnd_select _ 0 = return []
rnd_select (x:xs) n =
do
r <- randomRIO (0, (length xs))
if r < n
then do
rest <- rnd_select xs (n-1)
return (x : rest)
else rnd_select xs n
rnd_select' xs n = do
gen <- getStdGen
return $ take n [ xs !! x | x <- randomRs (0, (length xs) - 1) gen]
rnd_select'' :: Int -> [a] -> [a]
rnd_select'' n x = map (x!!) is
where is = take n . nub $ randomRs (0, length x - 1) (mkStdGen 100)
|