24 lines
1.2 KiB
Text
24 lines
1.2 KiB
Text
This package contains an implementation of a high-quality splittable
|
|
pseudorandom number generator. The generator is based on a cryptographic hash
|
|
function built on top of the ThreeFish block cipher. See the paper Splittable
|
|
Pseudorandom Number Generators Using Cryptographic Hashing by Claessen,
|
|
Palka for details and the rationale of the design.
|
|
|
|
The package provides the following:
|
|
|
|
A splittable PRNG that implements the standard System.Random.RandomGen class.
|
|
|
|
The generator also implements an alternative version of the
|
|
System.Random.TF.Gen.RandomGen class (exported from System.Random.TF.Gen),
|
|
which requires the generator to return pseudorandom integers from the full
|
|
32-bit range, and contains an n-way split function.
|
|
|
|
An alternative version of the Random class is provided, which is linked to the
|
|
new RandomGen class, together with Random instances for some integral types.
|
|
|
|
Two functions for initialising the generator with a non-deterministic seed:
|
|
one using the system time, and one using the /dev/urandom UNIX special file.
|
|
|
|
The package uses an adapted version of the reference C implementation of
|
|
ThreeFish from the reference package of the Skein hash function
|
|
(https://www.schneier.com/skein.html), originally written by Doug Whiting.
|