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 <https://hackage.haskell.org/package/mwc-random 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.
Package Version | Update ID | Released | Package Hub Version | Platforms | Subpackages |
---|---|---|---|---|---|
1.2.1.1-150500.3.3.2 info | SUSE-SLE-Module-Packagehub-Subpackages-15-SP5-2024-572 | 2024-02-21 | 15 SP5 Subpackages Updates |
|
|
1.2.1-bp154.1.11 info | GA Release | 2022-05-09 | 15 SP4 |
|
|
1.1-bp153.1.20 info | GA Release | 2021-04-08 | 15 SP3 |
|
|
1.1-bp152.4.14 info | GA Release | 2020-06-16 | 15 SP2 |
|
|
1.1-bp151.4.2 info | GA Release | 2019-07-17 | 15 SP1 |
|
|
1.1-bp151.3.13 info | GA Release | 2019-05-31 | 15 SP1 |
|
|
1.1-bp150.2.6 info | GA Release | 2018-07-31 | 15 |
|
|
1.1-bp150.2.7 info | GA Release | 2018-07-30 | 15 |
|
|
1.1-6.3 info | 5585 | 2016-09-14 | 12 GA-SP5 |
|
|
1.1-6.10 info | 5585 | 2016-09-14 | 12 GA-SP5 |
|
|
1.1-3.1 info | openSUSE-2016-291 | 2016-07-04 | 12 GA-SP5 |
|
|