我知道Haskell提供了一个在一定范围之间产生随机数的函数.
有没有办法从一组数字中产生随机数?
示例:假设[1, 6, 9]存在列表,我希望随机数不在此列表中,即1或6或9.
那么肯定有很多方法可以完成这项任务.也许最直接的是1)获得一个随机数0和length list - 12)使用该数字索引列表(list !! rand).
例如,如果您可以使用随机数生成IO monad,那么您可以使用randomRIO:
import System.Random
oneOf :: [a] -> IO (Maybe a)
oneOf [] = return Nothing
oneOf list = do
rand <- randomRIO (0,length list - 1)
return (Just $ list !! rand)
Run Code Online (Sandbox Code Playgroud)