haskell - 生成随机元组 Haskell

标签 haskell random tuples

我想知道是否可以使用如下代码生成随机元组:

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/

相关文章:

c# - 161803398 是一个 'Special' 的数字吗? Math.Random() 内部

python - 元组列表的唯一组合

python - 列表到元组的字典

list - Haskell:获取列表列表并将它们分解为几个单个列表(不连接)

python - msgpack: haskell 和 python

haskell - 在函数签名中隐藏多参数类型类的类型参数之一

haskell - 使用 Control.Monad.MonadRandom 对正态分布进行采样

javascript - 生成2个数字之间的随机数?

matlab - 你如何生成一个只有 -1 和 1 的随机序列?

scala - 更新元组列表