tlM`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPPNone 47<>LN0Generate 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 .%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.L  !"#$%&'()ab*+,-.cdefghijklmnopqrstuvwxyz{|}/  !"#$%&'()*+,-./  #$%& !"()'*+,-.F  !"#$%&'()ab*+,-.cdefghijklmnopqrstuvwxyz{|}ACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone +0357>?CL 1$State of the random number generator2TImmutable state of a random number generator. Suitable for storing for later use.3Save the state of a 1 in a Seed.4 Restore a 1 from a Seed.5!Generate a new seed using single ~. initFrozen 0 FrozenGen 16Standard initial seed.7 Create a 1 from a fixed initial seed.8%Initialize a generator a single word.initialize 0 >>= save FrozenGen 19"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 9 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]/0123456789:;<3  !"#$%&'()/0123456789:;<310/7:89;<23465  #$%& !"()'/0123456789:;<ACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone7=$State of the random number generatorStandard 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).AdSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of @ apply here as well.B3Advance the given generator n steps in log(n) time.CIRetract the given generator n steps in log(2^64-n) time. This is just  advance (-n).=>?@ABC,  !"#$%&'()=>?@ABC,=>A?@BC  #$%& !"()' =>?@ABCACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone +0357>?CL F$State of the random number generatorHSave the state of a F in a Seed.I Restore a F from a Seed.J!Generate a new seed using single ~. initFrozen 0FrozenGen 1876011003808476466KStandard initial seed.L Create a F from a fixed initial seed.M%Initialize a generator a single word.initialize 0 >>= saveFrozenGen 1876011003808476466N"Seed with system random number. (" /dev/urandom+" on Unix-like systems, time otherwise).OdSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of N apply here as well.PoAdvance 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 787992099QIRetract 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]DEFGHIJKLMNOPQ3  !"#$%&'()DEFGHIJKLMNOPQ3FEDLOMNPQGHIKJ  #$%& !"()'DEFGHIJKLMNOPQACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone +0357>?LRType alias of T specialized to ST. (SType alias of T specialized to .T$State of the random number generatorU%Immutable snapshot of the state of a T.VSave the state of a T in a U.W Restore a T from a U.X Fixed seed.YGenerate a new seed using two ~s.initFrozen 0 0FrozenGen 6364136223846793006 1Z Create a T from a fixed initial X.[&Initialize a generator with two words.initialize 0 0 >>= saveFrozenGen 6364136223846793006 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 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]RSTUVWXYZ[\]^_3  !"#$%&'()RSTUVWXYZ[\]^_3TSRZ][\^_UVWXY  #$%& !"()'RSTUVWXYZ[\]^_      !"#$%&'()*+,-./0123456789:;<=>?@ABCD9?@ABCD789:;<=>?@ABCD789:;<>=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdEFefgh9:ijklmn>9opqrs9:tuvwmnfgx9:yz{|mn}~pcgra_BsiWYmvNbt7IWada07vTFpSystem.Random.PCG.ClassSystem.Random.PCG.FastSystem.Random.PCG.UniqueSystem.Random.PCG.SingleSystem.Random.PCGSystemEntropyUnsignedVariateuniformuniformRuniformB 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 sysRandomGenSTGenIOGen FrozenGensaverestore initFrozenseedcreate initializewithSystemRandomcreateSystemRandomadvanceretractbaseGHC.WordWord32subadd uniformRangeTFCo:R:UnsignedWordTFCo:R:UnsignedIntTFCo:R:UnsignedWord64TFCo:R:UnsignedWord32TFCo:R:UnsignedWord16TFCo:R:UnsignedWord8TFCo:R:UnsignedInt64TFCo:R:UnsignedInt32TFCo:R:UnsignedInt16TFCo:R:UnsignedInt8$fVariate(,,,) $fVariate(,,) $fVariate(,) $fVariateInt $fVariateWord$fVariateDouble$fVariateFloat $fVariateBool$fVariateWord64$fVariateWord32$fVariateWord16$fVariateWord8$fVariateInt64$fVariateInt32$fVariateInt16 $fVariateInt8Word64ghc-prim GHC.TypesDoublepcg32f_advance_rpcg32f_boundedrand_rpcg32f_random_rpcg32f_srandom_r$fRandomGenFrozenGen$fGeneratorGenmpcg32u_advance_rpcg32u_boundedrand_rpcg32u_random_rpcg32u_srandom_r$fGeneratorGenIOpcg32s_advance_rpcg32s_boundedrand_rpcg32s_random_rpcg32s_srandom_rIOpcg32_advance_rpcg32_boundedrand_rpcg32_random_rpcg32_srandom_r$fStorableFrozenGen