úÎ!©ô¤tY      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL M N OPQRSTUVWX None$  random-source…Build a word out of 2 bytes. No promises are made regarding the order in which the bytes are stuffed. Note that this means that a  RandomSource or  MonadRandom) making use of the default definition of  getRandomWord, etc., may return different random values on different platforms when started with the same seed, depending on the platform's endianness.  random-source…Build a word out of 4 bytes. No promises are made regarding the order in which the bytes are stuffed. Note that this means that a  RandomSource or  MonadRandom) making use of the default definition of  getRandomWord, etc., may return different random values on different platforms when started with the same seed, depending on the platform's endianness. random-source…Build a word out of 8 bytes. No promises are made regarding the order in which the bytes are stuffed. Note that this means that a  RandomSource or  MonadRandom) making use of the default definition of  getRandomWord, etc., may return different random values on different platforms when started with the same seed, depending on the platform's endianness. random-sourcePack the low 23 bits from a Y into a Z( in the range [0,1). Used to convert a  stdUniform Y to a  stdUniform [. random-source^Same as word32ToFloat, but also return the unused bits (as the 9 least significant bits of a Y) random-sourcePack the low 23 bits from a \ into a Z( in the range [0,1). Used to convert a  stdUniform \ to a  stdUniform [. random-source]Same as wordToFloat, but also return the unused bits (as the 41 least significant bits of a \) random-sourcePack the low 52 bits from a \ into a [( in the range [0,1). Used to convert a  stdUniform \ to a  stdUniform [. random-sourcePack a Y into a [d in the range [0,1). Note that a Double's mantissa is 52 bits, so this does not fill all of them. random-source^Same as wordToDouble, but also return the unused bits (as the 12 least significant bits of a \)   Safe&'2SX1J random-sourceA PromptË GADT describing a request for a primitive random variate. Random variable definitions will request their entropy via these prompts, and entropy sources will satisfy those requests. The functions in Data.Random.Source.Internal.TH‰ extend incomplete entropy-source definitions to complete ones, essentially defining a very flexible implementation-defaulting system.ûSome possible future additions: PrimFloat :: Prim Float PrimInt :: Prim Int PrimPair :: Prim a -> Prim b -> Prim (a :*: b) PrimNormal :: Prim Double PrimChoice :: [(Double :*: a)] -> Prim a PrimBytes :: !Int -> Prim ByteString’Unfortunately, I cannot get Haddock to accept my comments about the data constructors, but hopefully they should be reasonably self-explanatory.None &'=>?@ASXfz  random-source%This type provides a way to define a "= for a monad without actually having to declare an instance." random-source9A source of entropy which can be used in the given monad. See also *..Minimum implementation is either the internal #š or all other functions. Additionally, this class's interface is subject to extension at any time, so it is very, very strongly recommended that the  randomSourceÿ* Template Haskell function be used to implement this function rather than directly implementing it. That function takes care of choosing default implementations for any missing functions; as long as at least one function is implemented, it will derive sensible implementations of all others.To use  randomSource×, just wrap your instance declaration as follows (and enable the TemplateHaskell, MultiParamTypeClasses and GADTs language extensions, as well as any others required by your instances, such as FlexibleInstances): $(randomSource [d| instance RandomSource FooM Bar where {- at least one RandomSource function... -} |])# random-sourceAGenerate a random value corresponding to the specified primitive.^This is an internal interface; use at your own risk. It may change or disappear at any time.$ random-source(Generate a uniformly distributed random ]% random-source(Generate a uniformly distributed random ^& random-source(Generate a uniformly distributed random Y' random-source(Generate a uniformly distributed random \( random-source(Generate a uniformly distributed random [ in the range 0 <= U < 1) random-source(Generate a uniformly distributed random _ in the range 0 <= U < 256^n* random-sourceGA typeclass for monads with a chosen source of entropy. For example, RVarà is such a monad - the source from which it is (eventually) sampled is the only source from which a random variable is permitted to draw, so when directly requesting entropy for a random variable these functions are used..Minimum implementation is either the internal +š or all other functions. Additionally, this class's interface is subject to extension at any time, so it is very, very strongly recommended that the  monadRandomÿ* Template Haskell function be used to implement this function rather than directly implementing it. That function takes care of choosing default implementations for any missing functions; as long as at least one function is implemented, it will derive sensible implementations of all others.To use  monadRandomq, just wrap your instance declaration as follows (and enable the TemplateHaskell and GADTs language extensions): ©$(monadRandom [d| instance MonadRandom FooM where getRandomDouble = return pi getRandomWord16 = return 4 {- etc... -} |])+ random-sourceAGenerate a random value corresponding to the specified primitive.^This is an internal interface; use at your own risk. It may change or disappear at any time., random-source(Generate a uniformly distributed random ]- random-source(Generate a uniformly distributed random ^. random-source(Generate a uniformly distributed random Y/ random-source(Generate a uniformly distributed random \0 random-source(Generate a uniformly distributed random [ in the range 0 <= U < 11 random-source(Generate a uniformly distributed random _ in the range 0 <= U < 256^n !"$%&'()#*,-./01+*,-./01+"$%&'()# ! None&'x*3 random-sourceComplete a possibly-incomplete `x implementation. It is recommended that this macro be used even if the implementation is currently complete, as the `# class may be extended at any time.To use 3×, just wrap your instance declaration as follows (and enable the TemplateHaskell, MultiParamTypeClasses and GADTs language extensions, as well as any others required by your instances, such as FlexibleInstances): $(randomSource [d| instance RandomSource FooM Bar where {- at least one RandomSource function... -} |])4 random-sourceComplete a possibly-incomplete `x implementation. It is recommended that this macro be used even if the implementation is currently complete, as the `# class may be extended at any time.To use 4q, just wrap your instance declaration as follows (and enable the TemplateHaskell and GADTs language extensions): ©$(monadRandom [d| instance MonadRandom FooM where getRandomDouble = return pi getRandomWord16 = return 4 {- etc... -} |])34None &'=?@Ax±"$%&'()*,-./0134*,-./01"$%&'()43None&'@A‚1: random-sourceÿOn systems that have it, /dev/random is a handy-dandy ready-to-use source of nonsense. Keep in mind that on some systems, Linux included, /dev/random collects "real" entropy, and if you don't have a good source of it, such as special hardware for the purpose or a *lot* of network traffic, it's pretty easy to suck the entropy pool dry with entropy-intensive applications. For many purposes other than cryptography, /dev/urandom is preferable because when it runs out of real entropy it'll still churn out pseudorandom data.:;<:;<None‚‡None &'=?@AƒNone &'=>?@A’‚J random-sourceGiven a mutable reference to a  generator, we can implement "< for it in any monad in which the reference can be modified.-Typically this would be used to define a new "» instance for some new reference type or new monad in which an existing reference type can be modified atomically. As an example, the following instance could be used to describe how a  can be a " in the b monad: ‡instance RandomSource IO (IORef PureMT) where supportedPrimsFrom _ _ = True getSupportedRandomPrimFrom = getRandomPrimFromMTRef¢(note that there is actually a more general instance declared already covering this as a a special case, so there's no need to repeat this declaration anywhere))Example usage (using some functions from  Data.Random in the random-fu package): main = do src <- newIORef (pureMT 1234) -- OR: newPureMT >>= newIORef x <- runRVar (uniform 0 100) src :: IO Double print xJJ None=?@A•ëL random-source8A token representing the "standard" entropy source in a *P monad. Its sole purpose is to make the following true (when the types check): "runRVar x StdRandom === sampleRVarLMLMNone &'=?@ASX¤@P random-sourceGiven a mutable reference to a c generator, we can make a "< usable in any monad in which the reference can be modified.See Data.Random.Source.PureMT.getRandomPrimFromMTRef^ for more detailed usage hints - this function serves exactly the same purpose except for a   generator instead of a PureMT generator.Q random-source Similarly, !getRandomWordFromRandomGenState xE can be used in any "state" monad in the mtl sense whose state is a c> generator. Additionally, the standard mtl state monads have *D instances which do precisely that, allowing an easy conversion of RVar s and other  Distribution& instances to "pure" random variables. Again, see Data.Random.Source.PureMT.getRandomPrimFromMTState_ for more detailed usage hints - this function serves exactly the same purpose except for a   generator instead of a PureMT generator. OPQ OPQd  !"#$%&'()*+,-. / 0 1 2 3 4 566789:;<=>?@ABCDEFG H IJKLMNOOPQRSTUVWXYZ[\]^_ ` ` abcd[\YZ_]Xefg hi hjefkeflefmnop qers htuv-random-source-0.3.0.11-GR9WjvIrLI7Fi8T9QgmtlsData.Random.Source.MWCData.Random.Source.PureMTData.Random.Source.StdGenData.Random.Internal.WordsData.Random.Internal.SourceData.Random.SourceData.Random.Source.DevRandomData.Random.Source.IOData.Random.Source.Std Data.Random.Source.Internal.PrimData.Random.Source.Internal.THghc-primGHC.Prim RealWorld5mersenne-random-pure64-0.2.2.0-LwU8uMtVY0LDxYrTBxKBytSystem.Random.Mersenne.Pure64 newPureMTpureMT&System.Random.Mersenne.Pure64.InternalPureMT*mwc-random-0.15.0.0-JmTUMi1wbNiIhmoqDlEhqoSystem.Random.MWCrestoresave initializecreateGen#random-1.2.0-LnDDzBF43Mx1KE2yrv9Wtf System.Random newStdGenSystem.Random.InternalmkStdGenStdGen buildWord16 buildWord32 buildWord32' buildWord64 buildWord64' buildWord64'' word32ToFloatword32ToFloatWithExcess wordToFloatwordToFloatWithExcess wordToDoubleword32ToDoublewordToDoubleWithExcessPrim PrimWord8 PrimWord16 PrimWord32 PrimWord64 PrimDoublePrimNByteIntegerGetPrim RandomSourcegetRandomPrimFromgetRandomWord8FromgetRandomWord16FromgetRandomWord32FromgetRandomWord64FromgetRandomDoubleFromgetRandomNByteIntegerFrom MonadRandom getRandomPrimgetRandomWord8getRandomWord16getRandomWord32getRandomWord64getRandomDoublegetRandomNByteInteger$fRandomSourcemGetPrim randomSource monadRandom$fRandomSourcemm$fRandomSourcemm0$fRandomSourcemm1$fRandomSourcemm2$fRandomSourcemm3 DevRandom DevURandom $fEqDevRandom$fShowDevRandom$fRandomSourceIODevRandom$fMonadRandomIO$fRandomSourceSTGen$fRandomSourceIOGen$fMonadRandomReaderT$fRandomSourcem1Ref$fMonadRandomStateT$fMonadRandomStateT0$fMonadRandomRWST$fMonadRandomRWST0$fRandomSourcemIORefgetRandomPrimFromMTRef$fRandomSourcemSTRef StdRandom$fRandomSourcemStdRandomgetRandomPrimFromStdGenIOgetRandomPrimFromRandomGenRefgetRandomPrimFromRandomGenStatebaseGHC.WordWord32 GHC.TypesFloatDoubleWord64Word8Word16 integer-gmpGHC.Integer.TypeIntegerContext GHC.IORefIORefIO RandomGen