A Rust crate parsing and evaluating dice strings for use in tabletop gaming.
roll dice using the format [Number of dice]d[dice sides] and add any modifiers. Also has a Python wrapper pydestiny available on PyPI.
Roll some dice using destiny::parse_dice_string:
use destiny::parse_dice_string;
println!("{}", parse_dice_string("1d4"));
println!("{}", parse_dice_string("2d6"));
println!("{}", parse_dice_string("1d8 + 3"));
println!("{}", parse_dice_string("1d6 + 2d8"));
Destiny also has the ability to calculate dice roll distributions. Given any roll it will calculate the chances of every possible roll and calculate probabilities. This is done fast due to Rust's natural speed and powerful parallel processing.
Calculate distributions using destiny::DiceDistribution:
use destiny::DiceDistribution;
let dd = DiceDistribution::new("2d6");
dd.ptable();
/* this will output:
+------+--------+--------+---------+--------+
| Roll | #Rolls | Roll% | Roll>=% | Roll<% |
+======+========+========+=========+========+
| 2 | 1 | 2.78% | 100.00% | 0.00% |
+------+--------+--------+---------+--------+
| 3 | 2 | 5.56% | 97.22% | 2.78% |
+------+--------+--------+---------+--------+
| 4 | 3 | 8.33% | 91.67% | 8.33% |
+------+--------+--------+---------+--------+
| 5 | 4 | 11.11% | 83.33% | 16.67% |
+------+--------+--------+---------+--------+
| 6 | 5 | 13.89% | 72.22% | 27.78% |
+------+--------+--------+---------+--------+
| 7 | 6 | 16.67% | 58.33% | 41.67% |
+------+--------+--------+---------+--------+
| 8 | 5 | 13.89% | 41.67% | 58.33% |
+------+--------+--------+---------+--------+
| 9 | 4 | 11.11% | 27.78% | 72.22% |
+------+--------+--------+---------+--------+
| 10 | 3 | 8.33% | 16.67% | 83.33% |
+------+--------+--------+---------+--------+
| 11 | 2 | 5.56% | 8.33% | 91.67% |
+------+--------+--------+---------+--------+
| 12 | 1 | 2.78% | 2.78% | 97.22% |
+------+--------+--------+---------+--------+
*/
Try rolling some dice! example: "1d20 + 3"