| Safe Haskell | Trustworthy |
|---|---|
| Language | Haskell2010 |
System.Random.SplitMix32
Contents
Description
SplitMix is a splittable pseudorandom number generator (PRNG) that is quite fast.
This is 32bit variant (original one is 32 bit).
You really don't want to use this one.
Note: This module supports all GHCs since GHC-7.0.4,
but GHC-7.0 and GHC-7.2 have slow implementation, as there
are no native popCount.
Synopsis
- data SMGen
- nextWord32 :: SMGen -> (Word32, SMGen)
- nextWord64 :: SMGen -> (Word64, SMGen)
- nextTwoWord32 :: SMGen -> (Word32, Word32, SMGen)
- nextInt :: SMGen -> (Int, SMGen)
- nextDouble :: SMGen -> (Double, SMGen)
- nextFloat :: SMGen -> (Float, SMGen)
- splitSMGen :: SMGen -> (SMGen, SMGen)
- bitmaskWithRejection32 :: Word32 -> SMGen -> (Word32, SMGen)
- bitmaskWithRejection64 :: Word64 -> SMGen -> (Word64, SMGen)
- mkSMGen :: Word32 -> SMGen
- initSMGen :: IO SMGen
- newSMGen :: IO SMGen
- seedSMGen :: Word32 -> Word32 -> SMGen
- seedSMGen' :: (Word32, Word32) -> SMGen
- unseedSMGen :: SMGen -> (Word32, Word32)
Documentation
SplitMix generator state.
Instances
| Read SMGen Source # |
|
| Show SMGen Source # | |
| NFData SMGen Source # | |
Defined in System.Random.SplitMix32 | |
| RandomGen SMGen Source # | |
nextWord32 :: SMGen -> (Word32, SMGen) Source #
Generate a Word32.
>>>take 3 $ map (printf "%x") $ unfoldr (Just . nextWord32) (mkSMGen 1337) :: [String]["e0cfe722","a6ced0f0","c3a6d889"]
nextDouble :: SMGen -> (Double, SMGen) Source #
Generate a Double in [0, 1) range.
>>>take 8 $ map (printf "%0.3f") $ unfoldr (Just . nextDouble) (mkSMGen 1337) :: [String]["0.878","0.764","0.063","0.845","0.262","0.490","0.176","0.544"]
nextFloat :: SMGen -> (Float, SMGen) Source #
Generate a Float in [0, 1) range.
>>>take 8 $ map (printf "%0.3f") $ unfoldr (Just . nextFloat) (mkSMGen 1337) :: [String]["0.878","0.652","0.764","0.631","0.063","0.180","0.845","0.645"]
Generation
bitmaskWithRejection32 :: Word32 -> SMGen -> (Word32, SMGen) Source #
Bitmask with rejection method of generating subrange of Word32.
bitmaskWithRejection64 :: Word64 -> SMGen -> (Word64, SMGen) Source #
Bitmask with rejection method of generating subrange of Word64.
bitmaskWithRejection64 w64 generates random numbers in closed-open
range of [0, w64).
>>>take 20 $ unfoldr (Just . bitmaskWithRejection64 5) (mkSMGen 1337)[0,2,4,2,1,4,2,4,2,2,3,0,3,2,2,2,3,1,2,2]
Initialisation
mkSMGen :: Word32 -> SMGen Source #
Preferred way to deterministically construct SMGen.
>>>mkSMGen 42SMGen 142593372 1604540297
Derive a new generator instance from the global SMGen using splitSMGen.
Create SMGen using seed and gamma.
>>>seedSMGen 2 2SMGen 2 3