2

我知道 Haskell 提供了一个在一定范围内产生随机数的函数。

有没有办法从一组数字中产生随机数?

示例:假设[1, 6, 9]存在列表,并且我希望随机数不在此列表中,即 1 或 6 或 9。

4

1 回答 1

5

那么肯定有很多方法可以完成这项任务。也许最直接的方法是 1) 获得一个介于0length list - 12) 之间的随机数 2) 使用该数字来索引列表 ( 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)
于 2013-10-08T05:38:38.817 回答