random
Version 1.2.1.3 revision 0 uploaded by lehins.
Package meta
- Synopsis
- Pseudo-random number generation
- Description
This package provides basic pseudo-random number generation, including the ability to split random number generators.
System.Random: pure pseudo-random number interface
In pure code, use System.Random.uniform and System.Random.uniformR from System.Random to generate pseudo-random numbers with a pure pseudo-random number generator like System.Random.StdGen.
As an example, here is how you can simulate rolls of a six-sided die using System.Random.uniformR:
>>> let roll = uniformR (1, 6) :: RandomGen g => g -> (Word, g)
>>> let rolls = unfoldr (Just . roll) :: RandomGen g => g -> [Word]
>>> let pureGen = mkStdGen 42
>>> take 10 (rolls pureGen) :: [Word] [1,1,3,2,4,5,3,4,6,2]
See System.Random for more details.
System.Random.Stateful: monadic pseudo-random number interface
In monadic code, use System.Random.Stateful.uniformM and System.Random.Stateful.uniformRM from System.Random.Stateful to generate pseudo-random numbers with a monadic pseudo-random number generator, or using a monadic adapter.
As an example, here is how you can simulate rolls of a six-sided die using System.Random.Stateful.uniformRM:
>>> let rollM = uniformRM (1, 6) :: StatefulGen g m => g -> m Word
>>> let pureGen = mkStdGen 42
>>> runStateGen_ pureGen (replicateM 10 . rollM) :: [Word] [1,1,3,2,4,5,3,4,6,2]
The monadic adapter System.Random.Stateful.runStateGen_ is used here to lift the pure pseudo-random number generator
pureGen
into the System.Random.Stateful.StatefulGen context.The monadic interface can also be used with existing monadic pseudo-random number generators. In this example, we use the one provided in the mwc-random package:
>>> import System.Random.MWC as MWC
>>> let rollM = uniformRM (1, 6) :: StatefulGen g m => g -> m Word
>>> monadicGen <- MWC.create
>>> replicateM 10 (rollM monadicGen) :: IO [Word] [2,3,6,6,4,4,3,1,5,4]
See System.Random.Stateful for more details.
- Author
- n/a
- Bug reports
- https://github.com/haskell/random/issues
- Category
- System
- Copyright
- n/a
- Homepage
- n/a
- Maintainer
- core-libraries-committee@haskell.org
- Package URL
- n/a
- Stability
- n/a