我想知道是否可以使用如下代码生成随机元组:
take 4 $ randomRs ((0,0),(70,100)) $ mkStdGen x :: [(Double,Double)]
当我尝试这个时,我收到错误:
No instance for (Random (Float, Float)) arising from a use of 'randoms'
有没有办法在不使用
zip
的情况下获得随机元组? ?
最佳答案
基本上错误消息是说没有定义的方法来制作随机元组。但是你当然可以自己添加一个。
在我的脑海里(即,我还没有真正测试过这个),你可以做类似的事情
instance (Random x, Random y) => Random (x, y) where
randomR ((x1, y1), (x2, y2)) gen1 =
let (x, gen2) = randomR (x1, x2) gen1
(y, gen3) = randomR (y1, y2) gen2
in ((x, y), gen3)
现在您可以使用
randomR
在元组上(前提是元组中的类型支持随机生成)。
关于haskell - 生成随机元组 Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669803/