úÎ «{ KÄ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPPNone <>?DFTVO0Generate a uniformly distributed random vairate.$Use entire range for integral types.#Use (0,1] range for floating types.FGenerate a uniformly distributed random vairate in the given range.'Use inclusive range for integral types.#Use (a,b] range for floating types.ŠGenerate a uniformly distributed random vairate in the range [0,b). For integral types the bound must be less than the max bound of Ä= (4294967295). Behaviour is undefined for negative bounds..Generate a random number using System.Entropy.%Use RDRAND if available and XOR with  /dev/urandomq on Unix and CryptAPI on Windows. This entropy is considered cryptographically secure but not true entropy./  !"#$%&'()*+,-./  #$%& !"()'*+,-.ACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone16;=>?FGQTV1)?Type alias of A specialized to Å.@Type alias of A specialized to Æ.A$State of the random number generatorB%Immutable snapshot of the state of a A.CSave the state of a A in a B.D Restore a A from a B.E Fixed seed.FGenerate a new seed using two Çs.initFrozen 0 0FrozenGen 6364136223846793006 1G Create a A from a fixed initial E.H&Initialize a generator with two words.initialize 0 0 >>= saveFrozenGen 6364136223846793006 1I!Seed with system random number. ( /dev/urandom2 on Unix-like systems and CryptAPI on Windows).J\Run an action with a frozen generator, returning the result and the new frozen generator.KbSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of I apply here as well.LoAdvance the given generator n steps in log(n) time. (Note that a "step" is a single random 32-bit (or less) . Data types such as È or Ç require two "steps".)@create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g 3640764222=create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g 3640764222/create >>= \g -> advance 1000 g >> uniformW32 g 3640764222MIRetract the given generator n steps in log(2^64-n) time. This is just  advance (-n).,create >>= \g -> replicateM 3 (uniformW32 g)[355248013,41705475,3406281715];create >>= \g -> retract 1 g >> replicateM 3 (uniformW32 g)[19683962,355248013,41705475]4  !"#$%&'()?@ABCDEFGHIJKLM4A@?GKHIJLMBCDEF  #$%& !"()'ACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone16;=>?FGKQTVJq Z$State of the random number generator[TImmutable state of a random number generator. Suitable for storing for later use.\Save the state of a Z in a Seed.] Restore a Z from a Seed.^!Generate a new seed using single Ç. initFrozen 0 FrozenGen 1_Standard initial seed.` Create a Z from a fixed initial seed.a%Initialize a generator a single word.initialize 0 >>= save FrozenGen 1b!Seed with system random number. ( /dev/urandom2 on Unix-like systems and CryptAPI on Windows).c\Run an action with a frozen generator, returning the result and the new frozen generator.dbSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of b apply here as well.eoAdvance the given generator n steps in log(n) time. (Note that a "step" is a single random 32-bit (or less) . Data types such as È or Ç require two "steps".)@create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g 3725702568=create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g 3725702568/create >>= \g -> advance 1000 g >> uniformW32 g 3725702568fIRetract the given generator n steps in log(2^64-n) time. This is just  advance (-n).,create >>= \g -> replicateM 3 (uniformW32 g)![2951688802,2698927131,361549788];create >>= \g -> retract 1 g >> replicateM 3 (uniformW32 g)![954135925,2951688802,2698927131]4  !"#$%&'()XYZ[\]^_`abcdef4ZYX`dabcef[\]_^  #$%& !"()'<Copyright (c) 2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPPNone,-16;=>?DFGKT`Í s%State of the random number generator.uSave the state of a s in a Seed.v Restore a s from a Seed.w!Generate a new seed using single Ç. initFrozen 0 FrozenGen 1xStandard initial seed.y Create a s from a fixed initial seed.z%Initialize a generator a single word.initialize 0 >>= save FrozenGen 1{"Seed with system random number. (" /dev/urandom+" on Unix-like systems, time otherwise).|bSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of { apply here as well.}oAdvance the given generator n steps in log(n) time. (Note that a "step" is a single random 32-bit (or less) . Data types such as È or Ç require two "steps".)@create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g 3725702568=create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g 3725702568/create >>= \g -> advance 1000 g >> uniformW32 g 3725702568~IRetract the given generator n steps in log(2^64-n) time. This is just  advance (-n).,create >>= \g -> replicateM 3 (uniformW32 g)![2951688802,2698927131,361549788];create >>= \g -> retract 1 g >> replicateM 3 (uniformW32 g)![954135925,2951688802,2698927131]3  !"#$%&'()qrstuvwxyz{|}~3srqy|z{}~tuvxw  #$%& !"()'<Copyright (c) 2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPPNone16;=>?DFGKTy¥ˆAThe multiple sequence varient of the pcg random number generator.Š$State of the random number generator Fixed seed.ŽPure version of —.É&Create a new generator from two words. Version of Ê that returns a Ä.Save the state of a Š in a Seed.‘ Restore a Š from a Seed.’&Create a new generator from two words.initFrozen 0 0SetSeq 6364136223846793006 1“ Create a Š from a fixed initial seed.”%Initialize a generator a single word.initialize 0 0 >>= saveSetSeq 6364136223846793006 1•!Seed with system random number. ( /dev/urandom2 on Unix-like systems and CryptAPI on Windows).–!Seed with system random number. ( /dev/urandom2 on Unix-like systems and CryptAPI on Windows).—oAdvance the given generator n steps in log(n) time. (Note that a "step" is a single random 32-bit (or less) . Data types such as È or Ç require two "steps".)@create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g 3640764222=create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g 3640764222/create >>= \g -> advance 1000 g >> uniformW32 g 3640764222˜IRetract the given generator n steps in log(2^64-n) time. This is just  advance (-n).,create >>= \g -> replicateM 3 (uniformW32 g)[355248013,41705475,3406281715];create >>= \g -> retract 1 g >> replicateM 3 (uniformW32 g)[19683962,355248013,41705475]6  !"#$%&'()ˆ‰Š‹ŒŽ‘’“”•–—˜6ŠŒ‹“–”•—˜‰‘’  #$%& !"()'ˆŽACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone16;=>?FGKQTV’9 £$State of the random number generator¥Save the state of a £ in a Seed.¦ Restore a £ from a Seed.§!Generate a new seed using single Ç. initFrozen 0FrozenGen 1876011003808476466¨Standard initial seed.© Create a £ from a fixed initial seed.ª%Initialize a generator a single word.initialize 0 >>= saveFrozenGen 1876011003808476466«!Seed with system random number. ( /dev/urandom2 on Unix-like systems and CryptAPI on Windows).¬\Run an action with a frozen generator, returning the result and the new frozen generator.­dSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of « apply here as well.®oAdvance the given generator n steps in log(n) time. (Note that a "step" is a single random 32-bit (or less) . Data types such as È or Ç require two "steps".)@create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g 787992099=create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g 787992099/create >>= \g -> advance 1000 g >> uniformW32 g 787992099¯IRetract the given generator n steps in log(2^64-n) time. This is just  advance (-n).,create >>= \g -> replicateM 3 (uniformW32 g)"[1499251125,2252584727,2021901712];create >>= \g -> retract 1 g >> replicateM 3 (uniformW32 g)"[4031155981,1499251125,2252584727]4  !"#$%&'()¡¢£¤¥¦§¨©ª«¬­®¯4£¢¡©­ª«¬®¯¤¥¦¨§  #$%& !"()'ACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone>?žçº$State of the random number generatorËStandard initial seed.» Create a º from a fixed initial seed.¼WCreate a generator from two words. Note: this is not the same as the two words in a Seed.½"Seed with system random number. (" /dev/urandom+" on Unix-like systems, time otherwise).¾dSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of ½ apply here as well.¿3Advance the given generator n steps in log(n) time.ÀIRetract the given generator n steps in log(2^64-n) time. This is just  advance (-n).,  !"#$%&'()º»¼½¾¿À,º»¾¼½¿À  #$%& !"()'Ì      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_GHIJKLNMOPQRSTUVXYZ[W\]^_GHIJKLNMOPQSTUVXYZ[`\]abJIGHMcdKLNOPQSTUefXghijkGHIJKLNMOPQRSTUVXYZ[W\]^_IOPQSTUl^_mnompqrstmnursvwxyzM{(pcg-random-0.1.3.5-D0Q8vtxnQxHc6Db55grkMSystem.Random.PCG.ClassSystem.Random.PCGSystem.Random.PCG.FastSystem.Random.PCG.Fast.PureSystem.Random.PCG.PureSystem.Random.PCG.SingleSystem.Random.PCG.UniqueUnsignedVariateuniformuniformRuniformB Generatoruniform1uniform2 uniform1B uniformI8 uniformI16 uniformI32 uniformI64 uniformW8 uniformW16 uniformW32 uniformW64 uniformBooluniformFuniformD uniformRI8 uniformRI16 uniformRI32 uniformRI64 uniformRW8 uniformRW16 uniformRW32 uniformRW64 uniformRBool uniformRF uniformRD uniformBI8 uniformBI16 uniformBI32 uniformBI64 uniformBW8 uniformBW16 uniformBW32 uniformBW64 uniformBBool uniformBF uniformBD wordsTo64Bit wordToBool wordToFloat wordsToDouble sysRandom$fVariate(,,,) $fVariate(,,) $fVariate(,) $fVariateInt $fVariateWord$fVariateDouble$fVariateFloat $fVariateBool$fVariateWord64$fVariateWord32$fVariateWord16$fVariateWord8$fVariateInt64$fVariateInt32$fVariateInt16 $fVariateInt8GenSTGenIOGen FrozenGensaverestoreseed initFrozencreate initializewithSystemRandom withFrozencreateSystemRandomadvanceretract$fRandomGenFrozenGen$fStorableFrozenGen$fGeneratorGenm$fShowFrozenGen $fEqFrozenGen$fOrdFrozenGen$fDataFrozenGen$fGenericFrozenGen$fEqGen$fOrdGen$fPrimFrozenGen $fShowPairSetSeq advanceSetSeqnext'$fStorableSetSeq$fRandomGenSetSeq $fShowSetSeq $fOrdSetSeq $fEqSetSeq $fDataSetSeq$fGenericSetSeq$fGeneratorGenIObaseGHC.WordWord32GHC.STSTghc-prim GHC.TypesIOWord64Doublestart!random-1.1-CJH7BBt3P9p8xr5opwxe8C System.Randomnext