use*_*128 4 random haskell tuples
我想知道是否可以使用以下代码生成随机元组:
take 4 $ randomRs ((0,0),(70,100)) $ mkStdGen x :: [(Double,Double)]
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我得到错误:
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)
Run Code Online (Sandbox Code Playgroud)
现在你可以使用randomR在元组(前提是该类型中的元组支持随机生成).