úδ§K      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPPNone :<=BDRT0Generate 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.B  !"#$%&'()ÃÄ*+,-.Å/0123456789:;<=>/  !"#$%&'()*+,-./  #$%& !"()'*+,-.<  !"#$%&'()ÃÄ*+,-.Å/0123456789:;<=>ACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone059;<=DEIORT A$State of the random number generatorBTImmutable state of a random number generator. Suitable for storing for later use.CSave the state of a A in a Seed.D Restore a A from a Seed.E!Generate a new seed using single Æ. initFrozen 0 FrozenGen 1FStandard initial seed.G Create a A from a fixed initial seed.H%Initialize a generator a single word.initialize 0 >>= save FrozenGen 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 3725702568=create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g 3725702568/create >>= \g -> advance 1000 g >> uniformW32 g 3725702568MIRetract 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]?@AÈBÉÊËÌÍCDEFGHIJKLMNO4  !"#$%&'()?@ABCDEFGHIJKLM4A@?GKHIJLMBCDFE  #$%& !"()'?@AÈBÉÊËÌÍCDEFGHIJKLMNO<Copyright (c) 2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPPNone059;<=BDEIR Z%State of the random number generator.\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/urandom+" on Unix-like systems, time otherwise).cbSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of b apply here as well.doAdvance 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 3725702568eIRetract 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]ÎÏXYZĞ[ÑÒÓÔÕÖר\]^_`abcdefg3  !"#$%&'()XYZ[\]^_`abcde3ZYX`cabde[\]_^  #$%& !"()'ÎÏXYZĞ[ÑÒÓÔÕÖר\]^_`abcdefgACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone<=m$State of the random number generatorÙStandard initial seed.n Create a m from a fixed initial seed.oWCreate a generator from two words. Note: this is not the same as the two words in a Seed.p"Seed with system random number. (" /dev/urandom+" on Unix-like systems, time otherwise).qdSeed a PRNG with data from the system's fast source of pseudo-random numbers. All the caveats of p apply here as well.r3Advance the given generator n steps in log(n) time.sIRetract the given generator n steps in log(2^64-n) time. This is just  advance (-n).mÚÛÜİŞÙnopqrst,  !"#$%&'()mnopqrs,mnqoprs  #$%& !"()' mÚÛÜİŞÙnopqrstACopyright (c) 2014-2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPP, FFINone059;<=DEIORT y$State of the random number generator{Save the state of a y in a Seed.| Restore a y from a Seed.}!Generate a new seed using single Æ. initFrozen 0FrozenGen 1876011003808476466~Standard initial seed. Create a y 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]wxyßzàáâãä{|}~€‚ƒ„…†‡4  !"#$%&'()wxyz{|}~€‚ƒ„…4yxwƒ€‚„…z{|~}  #$%& !"()'wxyßzàáâãä{|}~€‚ƒ„…†‡<Copyright (c) 2015, Christopher Chalmers <c.chalmers@me.com>BSD3(Christopher Chalmers <c.chalmers@me.com> experimentalCPPNone059;<=BDEIRAThe 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, FFINone059;<=DEORT©Type alias of « specialized to ò.ªType alias of « specialized to ó.«$State of the random number generator¬%Immutable snapshot of the state of a «.­Save the state of a « in a ¬.® Restore a « from a ¬.¯ Fixed seed.°Generate a new seed using two Æs.initFrozen 0 0FrozenGen 6364136223846793006 1± Create a « from a fixed initial ¯.²&Initialize a generator with two words.initialize 0 0 >>= saveFrozenGen 6364136223846793006 1³!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.µ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]©ª«ô¬õö÷øù­®¯°±²³´µ¶·¸¹º4  !"#$%&'()©ª«¬­®¯°±²³´µ¶·4«ª©±µ²³´¶·¬­®¯°  #$%& !"()'©ª«ô¬õö÷øù­®¯°±²³´µ¶·¸¹ºú      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_GHIJKLMNOPQSTUVWXYZ`aIOPQSTUb^_GHIJKLMNOPQRSTUVWXYZ[\]^_cJIGHNdeKLMOPQSTUfWghijklGHIJKLNMOPQRSTUVW[XYZ\]^_mnopqrmnstuvIJwxyz{|}~€‚ƒ„…NI†‡ˆ‰IJŠ‹Œ‘{{c}’€‚ƒ„“m”•tu–IJ—˜™š›)pcg-random-0.1.3.3-6yYstg4Ko469gMCRlVZggVSystem.Random.PCG.ClassSystem.Random.PCG.FastSystem.Random.PCG.Fast.PureSystem.Random.PCG.UniqueSystem.Random.PCG.SingleSystem.Random.PCG.PureSystem.Random.PCGUnsignedVariateuniformuniformRuniformB 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 FrozenGensaverestore initFrozenseedcreate initializewithSystemRandom withFrozencreateSystemRandomadvanceretract$fRandomGenFrozenGen$fGeneratorGenm$fShowFrozenGen $fEqFrozenGen$fOrdFrozenGen$fStorableFrozenGen$fDataFrozenGen$fGenericFrozenGen$fEqGen$fOrdGen$fPrimFrozenGen $fShowPair$fGeneratorGenIOSetSeq advanceSetSeqnext'$fRandomGenSetSeq$fStorableSetSeq $fShowSetSeq $fOrdSetSeq $fEqSetSeq $fDataSetSeq$fGenericSetSeqbaseGHC.WordWord32subadd uniformRangeWord64ghc-prim GHC.TypesDoublepcg32f_advance_rpcg32f_boundedrand_rpcg32f_random_rpcg32f_srandom_rPairPGFfastMultiplierstateoutputpairbounded advancing advanceFastpcg32u_advance_rpcg32u_boundedrand_rpcg32u_random_rpcg32u_srandom_rpcg32s_advance_rpcg32s_boundedrand_rpcg32s_random_rpcg32s_srandom_rstart!random-1.1-54KmMHXjttlERYcr1mvsAe System.Randomnext multiplieradvanceSetSeq'GHC.STSTIOpcg32_advance_rpcg32_boundedrand_rpcg32_random_rpcg32_srandom_r