@hackage dice-entropy-conduit1.0.0.1

Cryptographically secure n-sided dice via rejection sampling.

This library uses rejection sampling to provide cryptographically secure n-sided dice rolls and random sampling (within a given range). The number of used random bits is close to the information-theoretic optimal bound.

Usage:

If we wanted to use the system-specific entropy source (systemEntropy) to produce 10 dice rolls of a 6-sided dice (i.e. range [0,5]), we could write:

> systemEntropy $$ diceRolls 6 =$= CL.take 10
[5,1,3,3,0,5,3,2,2,1]

The function testPerformance yields the actual number of consumed random bits:

> testPerformance 12 10000
Generated 10000 random samples in range [0,11]
Average number of bits used: 3.5904
Entropy lower bound on the number of required bits: 3.5849625007211565
Performance ratio: 1.0015167520658164

Feedback is welcome!