| Copyright | Copyright (c) 2014-2015 Christopher Chalmers <c.chalmers@me.com> |
|---|---|
| License | BSD3 |
| Maintainer | Christopher Chalmers <c.chalmers@me.com> |
| Stability | experimental |
| Portability | CPP |
| Safe Haskell | None |
| Language | Haskell2010 |
System.Random.PCG.Class
Description
Classes for working with random numbers along with utility functions. In a future release this module may disappear and use another module for this functionality.
Synopsis
- class Monad m => Generator g m where
- class Variate a where
- uniformW8 :: Generator g m => g -> m Word8
- uniformW16 :: Generator g m => g -> m Word16
- uniformW32 :: Generator g m => g -> m Word32
- uniformW64 :: Generator g m => g -> m Word64
- uniformI8 :: Generator g m => g -> m Int8
- uniformI16 :: Generator g m => g -> m Int16
- uniformI32 :: Generator g m => g -> m Int32
- uniformI64 :: Generator g m => g -> m Int64
- uniformF :: Generator g m => g -> m Float
- uniformD :: Generator g m => g -> m Double
- uniformBool :: Generator g m => g -> m Bool
- uniformRW8 :: Generator g m => (Word8, Word8) -> g -> m Word8
- uniformRW16 :: Generator g m => (Word16, Word16) -> g -> m Word16
- uniformRW32 :: Generator g m => (Word32, Word32) -> g -> m Word32
- uniformRW64 :: Generator g m => (Word64, Word64) -> g -> m Word64
- uniformRI8 :: Generator g m => (Int8, Int8) -> g -> m Int8
- uniformRI16 :: Generator g m => (Int16, Int16) -> g -> m Int16
- uniformRI32 :: Generator g m => (Int32, Int32) -> g -> m Int32
- uniformRI64 :: Generator g m => (Int64, Int64) -> g -> m Int64
- uniformRF :: Generator g m => (Float, Float) -> g -> m Float
- uniformRD :: Generator g m => (Double, Double) -> g -> m Double
- uniformRBool :: Generator g m => (Bool, Bool) -> g -> m Bool
- uniformBW8 :: Generator g m => Word8 -> g -> m Word8
- uniformBW16 :: Generator g m => Word16 -> g -> m Word16
- uniformBW32 :: Generator g m => Word32 -> g -> m Word32
- uniformBW64 :: Generator g m => Word64 -> g -> m Word64
- uniformBI8 :: Generator g m => Int8 -> g -> m Int8
- uniformBI16 :: Generator g m => Int16 -> g -> m Int16
- uniformBI32 :: Generator g m => Int32 -> g -> m Int32
- uniformBI64 :: Generator g m => Int64 -> g -> m Int64
- uniformBF :: Generator g m => Float -> g -> m Float
- uniformBD :: Generator g m => Double -> g -> m Double
- uniformBBool :: Generator g m => Bool -> g -> m Bool
- type family Unsigned a :: *
- wordsTo64Bit :: Integral a => Word32 -> Word32 -> a
- wordToBool :: Word32 -> Bool
- wordToFloat :: Word32 -> Float
- wordsToDouble :: Word32 -> Word32 -> Double
- sysRandom :: IO Word64
Classes
class Monad m => Generator g m where #
Methods
uniform1 :: (Word32 -> a) -> g -> m a #
uniform2 :: (Word32 -> Word32 -> a) -> g -> m a #
uniform1B :: Integral a => (Word32 -> a) -> Word32 -> g -> m a #
Instances
| Generator Gen IO # | |
| (PrimMonad m, s ~ PrimState m) => Generator (Gen s) m # | |
| (PrimMonad m, s ~ PrimState m) => Generator (Gen s) m # | |
| (PrimMonad m, s ~ PrimState m) => Generator (Gen s) m # | |
| (PrimMonad m, s ~ PrimState m) => Generator (Gen s) m # | |
| (PrimMonad m, s ~ PrimState m) => Generator (Gen s) m # | |
Methods
uniform :: Generator g m => g -> m a #
Generate a uniformly distributed random vairate.
- Use entire range for integral types.
- Use (0,1] range for floating types.
uniformR :: Generator g m => (a, a) -> g -> m a #
Generate a uniformly distributed random vairate in the given range.
- Use inclusive range for integral types.
- Use (a,b] range for floating types.
uniformB :: Generator g m => a -> g -> m a #
Generate a uniformly distributed random vairate in the range
[0,b). For integral types the bound must be less than the max bound
of Word32 (4294967295). Behaviour is undefined for negative
bounds.
Instances
| Variate Bool # | |
| Variate Double # | |
| Variate Float # | |
| Variate Int # | |
| Variate Int8 # | |
| Variate Int16 # | |
| Variate Int32 # | |
| Variate Int64 # | |
| Variate Word # | |
| Variate Word8 # | |
| Variate Word16 # | |
| Variate Word32 # | |
| Variate Word64 # | |
| (Variate a, Variate b) => Variate (a, b) # | |
| (Variate a, Variate b, Variate c) => Variate (a, b, c) # | |
| (Variate a, Variate b, Variate c, Variate d) => Variate (a, b, c, d) # | |
Type restricted versions
uniform
uniformW16 :: Generator g m => g -> m Word16 #
uniformW32 :: Generator g m => g -> m Word32 #
uniformW64 :: Generator g m => g -> m Word64 #
uniformI16 :: Generator g m => g -> m Int16 #
uniformI32 :: Generator g m => g -> m Int32 #
uniformI64 :: Generator g m => g -> m Int64 #
uniformBool :: Generator g m => g -> m Bool #
uniformR
uniformB
uniformBW8 :: Generator g m => Word8 -> g -> m Word8 #
uniformBW16 :: Generator g m => Word16 -> g -> m Word16 #
uniformBW32 :: Generator g m => Word32 -> g -> m Word32 #
uniformBW64 :: Generator g m => Word64 -> g -> m Word64 #
uniformBI8 :: Generator g m => Int8 -> g -> m Int8 #
uniformBI16 :: Generator g m => Int16 -> g -> m Int16 #
uniformBI32 :: Generator g m => Int32 -> g -> m Int32 #
uniformBI64 :: Generator g m => Int64 -> g -> m Int64 #
uniformBBool :: Generator g m => Bool -> g -> m Bool #
Utilities
Instances
| type Unsigned Int # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Int8 # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Int16 # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Int32 # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Int64 # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Word # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Word8 # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Word16 # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Word32 # | |
Defined in System.Random.PCG.Class | |
| type Unsigned Word64 # | |
Defined in System.Random.PCG.Class | |
wordsTo64Bit :: Integral a => Word32 -> Word32 -> a #
wordToBool :: Word32 -> Bool #
wordToFloat :: Word32 -> Float #
wordsToDouble :: Word32 -> Word32 -> Double #
Generate a random number using System.Entropy.
Use RDRAND if available and XOR with /dev/urandom on Unix and
CryptAPI on Windows. This entropy is considered cryptographically
secure but not true entropy.