real-dice: Random number generation based on physical media touched by humans

[ data, library, math, mit, program ] [ Propose Tags ]

This package provides random data gathered via human interaction with the physical world as well as utilities to leverage this data for random number generation and other RNG-based tasks

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS],,,
Change log
Dependencies base (>= && <=, mtl (>=2.2.2 && <2.4), primes (>=0.2.1 && <0.3), random (>=1.2.1 && <1.3), real-dice [details]
License MIT
Copyright 2024 Kyle Beechly
Author Kyle Beechly
Category Math, Data
Home page
Source repo head: git clone
Uploaded by kaBeech at 2024-06-13T07:41:01Z
Distributions Stackage:
Executables real-dice
Downloads 64 total (48 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-06-13 [all 1 reports]

Readme for real-dice-

[back to package description]

Real* Dice* Hackage

Random number generation using real dice and other media that I actually touched!


In celebration of Haskell's determinative nature, this package provides random data from my interaction with the physical world as well as utilities to leverage this data for random number generation and other RNG-based tasks

Sometimes the digital world can feel cold and sterile compared to the messy and unpredictable nature of our physical environment. Purely functional languages like Haskell are, for better and for worse, particularly susceptible to this digital de-messification

This package can be used to bring some analog warmth and a human touch to our digital world


The API of the Coin, Die, and RNG modules more or less match the API of System.Random's random and randomR functions, but with each function handling a specific type and domain. For example, flipCoin returns Boolean values and roll1d n returns Integers in the range [1, n]

Running the executable will produce the standard randomized data as defined in the Generate modules (see app/Generate/ and src/RealDice/Generate/). If valid seed data exists in the data-seed/ directory, this will be randomized with the Real*Dice* data to generate custom balanced data in the data-generated/ directory (Coming Soon!)


How does Real*Dice* work?

Check the source, Hackage, or Hoogle for documentation!

The RNG system itself is a basic randomized table lookup. If it's good enough for the most perfect software ever written, it's good enough for me!

What changes are planned?

Check the issues and ``!

I encountered a bug or have a cool feature idea!

Please open an issue or submit a PR!

Why are there asterisks in "Real*Dice*"?

Ce ne sont pas des dés

Data contained in this project was generated with physical dice, but the project itself is not a physical object

Additionally, not all of the gathered data comes from rolling dice. Most of it comes from drawing poker chips, which can be much faster. Methodology for gathering the data is documented in src/RealDice/Generate/RawData.hs

...but why? On the whole thing?

Because it's cool.

The interaction between the digital world and the physical world fascinates me. Musicians love to talk about warmth and saturation in audio signals - see Variety Of Sound for some mind-blowing information and audio plugins. This warmth traditionally comes from signal imperfections springing from physical components. This package doesn't scratch the surface of this kind of signal theory, but it's an attempt to use the physical world to influence the digital one

Plus, we all know that observer interaction affects quantum systems, so it seems fun to have some random data touched by a human 😸