如何使用haskell对列表来压缩随机数列表

时间:2014-11-18 22:38:40

标签: haskell

module Meth where
import System.Random
import Data.List

type Dom = (Int,Int) 


gen :: StdGen
gen = mkStdGen 10

dominoes :: [Dom]  
dominoes = [(x, y)| x <- [0..6], y <- [x..6]]

shuffles:: StdGen->[Int] 
shuffles g = take 28 $ randoms g :: [Int]

我创建了一个包含28个随机数字的列表,我想用我的[Dom]列表压缩它并对其进行排序。我不知道如何从这一点开始

1 个答案:

答案 0 :(得分:1)

假设您想根据数字对其进行排序,您只需创建一个使用zip然后使用sortBy来获取结果的函数:

result :: StdGen -> [(Dom, Int)]
result g =
    let zipped = zip dominoes (shuffles g)
    in sortBy (compare `on` snd) zipped