Package org.randomness

Randomness Framework combine the best-world practices of randomness generation based on Channel API.

See:
          Description

Core
Randomness This class specifies basic Random Bit Generator (RBG) life cycle and mechanisms for the generation of random bits.
 

Specefications Summary
Truerandomness This class specifies True Random Number Generator (TRNG) techniques for the reading high quality, unpredictable random bytes from the specified entropy source.
Pseudorandomness This class specifies Pseudorandom Number Generator (PRNG) techniques for the compute bits deterministically using an underlying algorithm that, given the same initial state, always produces the same outputs.
Quasirandomess This class specify Quasirandom Number Generator techniques for quasirandom analogue of a random process which is a deterministic process specifically designed so that simulation of the quasirandom process gives the same limiting behavior (of some quantities of interest) as the random process, but with faster convergence.
Cryptorandomness This class specifies techniques for the compute cryptographically secure bits deterministically using an underlying algorithm that, if an adversary does not know the entropy input, then he can’t tell the difference between the pseudorandom bits and a stream of truly random bits, let alone predict any of the pseudorandom bits.
 

Implementations Summary
TRNG List of implemented True Random Number Generators - a sources of unpredictable data.
PRNG List of implemented Pseudo Random Number Generators that produces a deterministic, periodic and predictable pseudorandom sequence of bits from a initial value called a seed.
QRNG List of implemented Quasi-Random Number Generators produce highly uniform samples of the unit hypercube.
CSPRNG List of implemented Cryptographically Secure Pseudorandom Number Generators that produces random numbers with properties that make it suitable for use in cryptography.
 

Package org.randomness Description

Randomness Framework combine the best-world practices of randomness generation based on Channel API.

There are two fundamentally different strategies for generating random bits. One strategy is to produce bits non-deterministically, where every bit of output is based on a physical process that is unpredictable; this class of random bit generators is commonly known as non-deterministic random bit generators (NRBGs). The other strategy is to compute bits deterministically using an algorithm; this class of RBGs is known as Deterministic Random Bit Generators.

Randomness

Description

Randomness

Define random number generator as a Channel

Truerandomness

Thiss class represents non-deterministic random bit generators as a True Random Number Generators (TRNG). This kind of generators uses entropy source to obtain random bits and extraction function which, when applied to a high-entropy source process generates a random output that is shorter, yet uniformly distributed.

Pseudorandomness

This class represents pseudo random bit generator (PRNG) which compute bits repeatable, predictable and atomically using an underlying deterministic algorithm. The output sequence is not true random, in strong sense, but has all properties of true random sequence.

Quasirandomess

This class represents quasirandom analogue of a random process ( QRNG) which is a deterministic process specifically designed so that generated output give up serial independence of subsequently generated values in order to obtain as uniform as possible coverage of the domain. This avoids clusters and voids in the pattern of a finite set of selected points.

Cryptorandomness

This class represents cryptographically secure pseudo-random number generator (CSPRNG) with properties that make it suitable for use in cryptography. This generators has a unpredictable output, security strength value, secret internal state and usually used as key, or password generators. Specification inspired by NIST 800-90 special publication.

Comparison of RNG's

The table below sums up the characteristics of the all types of random number generators.

TRNG PRNG QRNG CSPRNG
Efficiency Poor Excellent Excellent Medium
Determinism Nondeterministic Determinstic Determinstic Unpredictable

Unless otherwise noted, passing a null argument to a constructor or method in any class or interface in this package will cause a NullPointerException to be thrown.