Dice Probability Framework

  • Description: A framework for calculating dice probabilities
  • Technology: Python, Pycharm
  • Scale: Side-project within five months
  • Team Size: Only me
  • Job: Everything
  • Biggest Learning: Sometimes it is worth to quickly hack a tool, then develop the overarching design, and then implement a polished concept


Calculate and load input data
Each dice system needs input data, i.e. 2d6 meaning you roll two six-sided dice and total their results. If there are no files describing the input data, it is calculated and saved, so that each subsequent run using this input data can just load it instead.

Evaluate and save output data
Results from a test are saved in the formats .txt and .csv. Especially the latter is made to be usable for other programs.

Plot Graphs
Probability curves created by a test automatically creates plots with the calculated values, giving a good overview over the results. All descriptions like those of the axis are fully automatically created.

Different modes
You can not only evaluate how probable the different results of a check for a defined system is, but also average and VS curves. The latter describes the probabilities of the different skill levels beating each other skill level (in which beating is defined as rolling a result greater or equal).

Last but not least is the user-study mode, in which the user is presented with random samples of a specified dice system and must calculate the result of these “checks” himself. The system tracks required time and error rate, evaluates them and saves it anonymously (by generating random IDs).