name:                 random
version:              1.2.1.1
visibility:           public
id:                   random-1.2.1.1-KqwHJ3jz4KT9lZEUwikxXa
key:                  random-1.2.1.1-KqwHJ3jz4KT9lZEUwikxXa
license:              BSD-3-Clause
maintainer:           core-libraries-committee@haskell.org
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
    <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.

category:             System
abi:                  d2c95c890dc3cfb90813c5fd7b32eabb
exposed:              True
exposed-modules:
    System.Random System.Random.Internal System.Random.Stateful

hidden-modules:       System.Random.GFinite
import-dirs:
    /usr/pkg/lib/x86_64-netbsd-ghc-9.6.3/random-1.2.1.1-KqwHJ3jz4KT9lZEUwikxXa

library-dirs:
    /usr/pkg/lib/x86_64-netbsd-ghc-9.6.3/random-1.2.1.1-KqwHJ3jz4KT9lZEUwikxXa

library-dirs-static:
    /usr/pkg/lib/x86_64-netbsd-ghc-9.6.3/random-1.2.1.1-KqwHJ3jz4KT9lZEUwikxXa

dynamic-library-dirs: /usr/pkg/lib/x86_64-netbsd-ghc-9.6.3
data-dir:             /usr/pkg/share/x86_64-netbsd-ghc-9.6.3/random-1.2.1.1
hs-libraries:         HSrandom-1.2.1.1-KqwHJ3jz4KT9lZEUwikxXa
depends:
    base-4.18.1.0 bytestring-0.11.5.2 deepseq-1.4.8.1 mtl-2.3.1
    splitmix-0.1.0.5-K2ILlZr4qMEFCi1jesLb2H

haddock-interfaces:
    /usr/pkg/share/doc/x86_64-netbsd-ghc-9.6.3/random-1.2.1.1/html/random.haddock

haddock-html:
    /usr/pkg/share/doc/x86_64-netbsd-ghc-9.6.3/random-1.2.1.1/html
