dice-sim

Simulate various dice throw situations


License
LGPL-3.0
Install
pip install dice-sim==1.0.0

Documentation

Intro

A small script for running simulations with dice throws, including situations where you get multiple rerolls and can decide which dice to keep or reroll.

Usage

usage: dice.py [-h] [-n NUM] [-s SIDES] [-ss [SIDES [SIDES ...]]] [-r REROLL]
               [--keep [STRATEGY [STRATEGY ...]]]
               [--stats [REDUCE [REDUCE ...]]] [-N SIMULATIONS] [--counts]

Simulate various dice throw situations.

optional arguments:
  -h, --help            Show this help message and exit.
  -n NUM                Specify the number of dice to throw.
  -s SIDES              Specify the number of sides all dice have.
  -ss [SIDES [SIDES ...]]
                        Specify the number of sides for each individual die.
  -r REROLL             Perform multiple rerolls (stats only count last roll).
  --keep [STRATEGY [STRATEGY ...]]
                        Choose a keeping strategy when performing rerolls.
                        Options are: ['none', 'unique', 'duplicate', 'value'].
  --stats [REDUCE [REDUCE ...]]
                        Performs multiple throws and outputs cumulative
                        results. Provide a parameter to choose an approach for
                        reducing a dice throw to a single value of interest.
                        Options are: ['count', 'sum', 'unique', 'values',
                        'order'].
  -N SIMULATIONS        Set the number of simulations to run for statistical
                        results.
  --counts              Print actual event counts instead of percentages in
                        the statistical results.

Examples

./dice.py
[6]

./dice.py -n 2
[6, 5]

./dice.py -n 2 --stats sum
Total sum of dice values in a throw:
2: 2.50 %
3: 4.50 %
4: 7.70 %
5: 11.20 %
6: 14.70 %
7: 19.20 %
8: 13.40 %
9: 9.80 %
10: 8.40 %
11: 5.60 %
12: 3.00 %

./dice.py -n 2 --stats count 1 6
Number of dice with the value [1, 6]:
0: 44.80 %
1: 43.60 %
2: 11.60 %

./dice.py -n 6 -r 3
[6, 5, 3, 2, 4, 3]
[5, 2, 3, 4, 6, 4]
[2, 5, 4, 2, 6, 6]

./dice.py -n 6 -r 3 --keep value 3
[6, 5, 3, 2, 4, 3]
[3, 3, 5, 2, 3, 4]
[3, 3, 3, 6, 4, 2]

./dice.py -n 6 -r 3 --keep value 3 --stats count 3
Number of dice with the value [3]:
0: 4.50 %
1: 16.30 %
2: 26.70 %
3: 31.20 %
4: 15.70 %
5: 5.10 %
6: 0.50 %

Terminology

  • Keep strategy: a strategy used to decide which dice to keep between rerolls
  • Reduction function: a function for reducing a dice throw result to a single value of interest