System.Random.TF

tf-random-0.5: High-quality splittable pseudorandom number generator

Copyright | (c) 2012-2013 Michał Pałka
License | BSD3
Maintainer | michal.palka@chalmers.se
Stability | experimental
Portability | portable
Safe Haskell | None
Language | Haskell98

System.Random.TF

Description

This module exports System.Random.TF.Gen and System.Random.TF.Init modules without exporting the alternative `RandomGen` class from System.Random.TF.Gen. To use this class and the `Random` instances written for it, please import System.Random.TF.Gen and System.Random.TF.Instances directly.

Synopsis

- data TFGen
- seedTFGen :: (Word64, Word64, Word64, Word64) -> TFGen
- mkSeedTime :: IO (Word64, Word64, Word64, Word64)
- mkSeedUnix :: IO (Word64, Word64, Word64, Word64)
- newTFGen :: IO TFGen
- mkTFGen :: Int -> TFGen

# Documentation

data TFGen #

The generator type

Instances

Read TFGen # |
Instance details Defined in System.Random.TF.Gen Methods readsPrec :: Int -> ReadS TFGen # readList :: ReadS [TFGen] # readPrec :: ReadPrec TFGen # readListPrec :: ReadPrec [TFGen] #
Show TFGen # |
Instance details Defined in System.Random.TF.Gen Methods showsPrec :: Int -> TFGen -> ShowS # show :: TFGen -> String # showList :: [TFGen] -> ShowS #
RandomGen TFGen # |
Instance details Defined in System.Random.TF.Gen Methods next :: TFGen -> (Int, TFGen) # genRange :: TFGen -> (Int, Int) # split :: TFGen -> (TFGen, TFGen) #
RandomGen TFGen # |
Instance details Defined in System.Random.TF.Gen Methods next :: TFGen -> (Word32, TFGen) # split :: TFGen -> (TFGen, TFGen) # splitn :: TFGen -> Int -> Word32 -> TFGen # level :: TFGen -> TFGen #

seedTFGen :: (Word64, Word64, Word64, Word64) -> TFGen #

Create a generator from a random seed.

mkSeedTime :: IO (Word64, Word64, Word64, Word64) #

Use system time create the random seed. This method of seeding may not be relible.

mkSeedUnix :: IO (Word64, Word64, Word64, Word64) #

Use the UNIX special file `/dev/urandom` to create the seed. Inspired by `random-mwc`.

newTFGen :: IO TFGen #

Derive a new generator instance from the global RNG using split. This is the default way of obtaining a new RNG instance. Initial generator is seeded using `mkSeedUnix` on UNIX, and `mkSeedTime` otherwise. This should be eventually replaced with proper seeding.

mkTFGen :: Int -> TFGen #

Quick and dirty way of creating a deterministically seeded generator.