Package Info

ghc-random


Pseudo-random number generation


Unspecified

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.


License: BSD-3-Clause
URL: https://hackage.haskell.org/package/random

Categories

Releases

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
  • x86-64
  • ghc-random
  • ghc-random-devel
1.2.1-bp154.1.11 info GA Release 2022-05-09 15 SP4
  • AArch64
  • ppc64le
  • x86-64
  • ghc-random
  • ghc-random-devel
1.1-bp153.1.20 info GA Release 2021-04-08 15 SP3
  • AArch64
  • ppc64le
  • x86-64
  • ghc-random
  • ghc-random-devel
1.1-bp152.4.14 info GA Release 2020-06-16 15 SP2
  • AArch64
  • ppc64le
  • x86-64
  • ghc-random
  • ghc-random-devel
1.1-bp151.4.2 info GA Release 2019-07-17 15 SP1
  • ppc64le
  • s390x
  • x86-64
  • ghc-random
  • ghc-random-devel
1.1-bp151.3.13 info GA Release 2019-05-31 15 SP1
  • AArch64
  • ghc-random
  • ghc-random-devel
1.1-bp150.2.6 info GA Release 2018-07-31 15
  • ppc64le
  • ghc-random
  • ghc-random-devel
1.1-bp150.2.7 info GA Release 2018-07-30 15
  • AArch64
  • x86-64
  • ghc-random
  • ghc-random-devel
1.1-6.3 info 5585 2016-09-14 12 GA-SP5
  • ppc64le
  • ghc-random
  • ghc-random-devel
1.1-6.10 info 5585 2016-09-14 12 GA-SP5
  • AArch64
  • s390x
  • x86-64
  • ghc-random
  • ghc-random-devel
1.1-3.1 info openSUSE-2016-291 2016-07-04 12 GA-SP5
  • x86-64
  • ghc-random
  • ghc-random-devel