# The tf-random package

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, Pałka 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.

Please note that even though the generator provides very high-quality pseudorandom numbers, it has not been designed with cryptographic applications in mind.

## Properties

Versions | 0.1, 0.2, 0.3, 0.4, 0.5 |
---|---|

Dependencies | base (>=4.2 && <5), primitive (>=0.3), random, time |

License | BSD3 |

Author | Michał Pałka <michal.palka@chalmers.se> |

Maintainer | Michał Pałka <michal.palka@chalmers.se> |

Category | Random |

Source repository | head: darcs get http://hub.darcs.net/michal.palka/tf-random |

Upload date | Wed Apr 9 13:57:37 UTC 2014 |

Uploaded by | MichalPalka |

Distributions | NixOS:0.5 |

Downloads | 45510 total (10207 in last 30 days) |

## Modules

[Index]

## Downloads

- tf-random-0.5.tar.gz [browse] (Cabal source package)
- Package description (included in the package)

#### Maintainers' corner

For package maintainers and hackage trustees