从Haskell中的用户定义数据类型生成随机值,可以使用System.Random
库中的Random
类型类和random
函数。以下是一个简单的示例:
import System.Random
data Color = Red | Green | Blue deriving (Show, Eq, Enum, Bounded)
instance Random Color where
randomR (lo, hi) g = let (a, g') = randomR (fromEnum lo, fromEnum hi) g
in (toEnum a, g')
random = randomR (minBound, maxBound)
main :: IO ()
main = do
gen <- newStdGen
let randomColor = randomR (Red, Blue) gen
putStrLn $ "Random color: " ++ show (fst randomColor)
在这个示例中,我们首先定义了一个名为Color
的用户定义数据类型,它有三个值:Red
、Green
和Blue
。然后,我们为Color
类型实现了Random
类型类,这样我们就可以使用random
和randomR
函数生成随机值。
在main
函数中,我们使用newStdGen
函数创建了一个随机数生成器,并使用randomR
函数生成了一个Color
类型的随机值。最后,我们输出了生成的随机颜色值。
这个示例展示了如何为用户定义的数据类型生成随机值。类似地,您可以为其他用户定义的数据类型实现Random
类型类,以便在Haskell中生成随机值。
领取专属 10元无门槛券
手把手带您无忧上云