A set of ideas and practices regarding the metaphysical relationship between the computer and D&D

Die Roller v1.2.1 (for Windows)

What's New

v1.2.1 (released 10/26/2016)

  • Fixed an annoyng bug in the UI when resizing the window.

v1.2 (released 6/14/2016)

  • Resizable font in die result area
  • Added PbP format
  • Added drop high/low die roll format
  • Added help page

v1.1 (released 1/17/2016)

  • Packaged as installer
  • Print preset titles with die roll results


This die roller lets you enter arbitrary dice strings with arithmetic modifiers and expressions, similar to what you find in dice-based RPG's. It uses the notation "MdN" where M represents the number of dice to roll, and N the number of sides on that dice. M is optional, and if omitted means just rolling a single die. The M dice are added together. The number of sides, N, can be arbitrary and does not have to correspond to physical dice (i.e., you can roll a d13 or a d7 if you think you need to). You can have multiple die rolls in a single die string.

You can also specify that the die roller keep the highest or lowest dice in a particular roll using M>m and M<m. Here, you roll M dice and keep the highest (>) or lowest (<) m dice from the results.

Math expressions can include arbitrary operators (though generally RPG's only use plusses and minuses).

The only limit to the number of dice, sides, and complexity of your die roll string are those of unsigned 32-bit integers, which means your result can't exceed 4,294,967,296. This should not be a problem in most games.

Finally, die rolls can be labeled by prepending "label=" to the begging of the roll string. This will cause label to be printed in the history window for the die roll. Presets make use of this feature.


In the Options menu you can select the Play By Post (PBP) format for printing die roll results, a popular format used in online RPG games. It looks like this:

Sneak Attack Damage d8 + 2 + 2d6 ⇒ (1) + 2 + (10) = 13

This format presents the type of roll, die roll sums, and final result in a compact format.


Here are some basic examples that show the die rollers capabilities.

Die String Result
d20+7 Roll a single d20 and add 7 to the result.
d8+2+3d6 Roll a d8, three d6, and add 2 to their sum.
4>3d6 Roll four d6 and sum the three highest die rolls.
2<d20 Roll two d20 and take the lower result.
melee atk w/ bonuses=d20+11-3 Roll a d20, add 11 and subtract 3, and label this as "melee atk w/ bonuses" in the history window

Frequently-needed die strings can be stored as presets which can be rolled using buttons or function keys to provide a one-click roll option. Presets can be titled with a custom string (e.g. "Melee" or "Fort Save") to make them easier to identify. Presets are saved in the registry, and can also be exported to a data file for transferring to another computer.

Random numbers

Random numbers are generated using the CrpytGenRandom() function from .NET. This is a high-quality random number generator suitable for cryptographic purposes. It actually fetches multiple numbers per roll and XOR's them together--a mathematical technique for improving the normality of the output of a random number generator that may have bias--then applies an unbiased algorithm to convert that result to the desired range (meaning, every number from 1 to N is equally likely to occur).