#haskell #random
Вопрос:
Я хочу использовать Control.Monad.Random.Class.fromList
fromList :: MonadRandom m => [(a, Rational)] -> m a
вместе с System.Random.mkStdGen
mkStdGen :: Int -> StdGen
https://hackage.haskell.org/package/random-1.2.1/docs/System-Random.html#v:mkStdGen
Я вижу экземпляр
(Monad m, RandomGen g) => MonadInterleave (RandT g m)
но я не уверен, как объединить.
Комментарии:
1.
runRandT (fromList _) (mkStdGen _)
Ответ №1:
Вам нужно использовать монаду, у которой есть экземпляр MonadRandom
, например RandT
:
import System.Random
import Control.Monad.Random
main :: IO ()
main = do
let stdGen = mkStdGen 2021
putStrLn $ fst $
runRand (fromList [("hello", 0.5), ("world", 0.1)]) stdGen
Что даст:
world