Cryptographically secure n-sided dice via rejection sampling. http://monoid.at/code

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

LGPL-2.1-only licensed by Peter Robinson

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.


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

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!

Depends on 5 packages:
Used by 1 package:
comments powered byDisqus