HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulehedgehog-1.7Haskell2010

Hedgehog.Internal.Seed

This is a port of "Fast Splittable Pseudorandom Number Generators" by Steele et. al. [1].

The paper's algorithm provides decent randomness for most purposes but sacrifices cryptographic-quality randomness in favor of speed. The original implementation is tested with DieHarder and BigCrush; see the paper for details.

This implementation, originally from [2], is a port from the paper.

It also takes in to account the SplittableRandom.java source code in OpenJDK v8u40-b25 as well as splittable_random.ml in Jane Street's standard library overlay (kernel) v113.33.03, and Random.fs in FsCheck v3.

Other than the choice of initial seed for from this port should be faithful.

  1. Guy L. Steele, Jr., Doug Lea, Christine H. Flood Fast splittable pseudorandom number generators Comm ACM, 49(10), Oct 2014, pp453-472.

  2. Nikos Baxevanis https://github.com/moodmosaic/SplitMix/blob/master/SplitMix.hs

  • 1 type
  • 13 values
  • Packagehedgehog-1.7
  • Exports14
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceSeed.hs
datadata Seed
#

A splittable random number generator.

Constructors

Instances6Eq, Ord, Read, Show, RandomGen, Lift
  • Eq SeedDefined in hedgehog-1.7 · Hedgehog.Internal.Seed
  • Ord SeedDefined in hedgehog-1.7 · Hedgehog.Internal.Seed
  • Read SeedDefined in hedgehog-1.7 · Hedgehog.Internal.Seed
  • Show SeedDefined in hedgehog-1.7 · Hedgehog.Internal.Seed
  • RandomGen SeedDefined in hedgehog-1.7 · Hedgehog.Internal.Seed
  • Lift SeedDefined in hedgehog-1.7 · Hedgehog.Internal.Seed

Internal

8 declarations

These functions are exported in case you need them in a pinch, but are not part of the public API and may change at any time, even as part of a minor update.

valuegoldenGamma :: Word64
#

A predefined gamma value's needed for initializing the "root" instances of Seed. That is, instances not produced by splitting an already existing instance.

We choose: the odd integer closest to 2^64/φ, where φ = (1 + √5)/2 is the golden ratio.