a statistical dice library for python
Project description
python dice ![logo](https://pypi-camo.freetls.fastly.net/8fe39f1cab90e22a3ac10e0131838f3a58b6b2d3/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f6d61726b62726f636b657474726f62736f6e2f707974686f6e5f646963652f6d61737465722f696d616765732f707974686f6e646963655f6c6f676f5f313238783132382e706e67)
a statistical dice engine for python
License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License http://creativecommons.org/licenses/by-nc-sa/4.0/
To install
python -m pip install python_dice
Source at
https://github.com/markbrockettrobson/python_dice
Usage
from python_dice import PythonDiceInterpreter
interpreter = PythonDiceInterpreter()
program = ["1d6"]
roll = interpreter.roll(program)["stdout"]
print(roll)
> 3
from python_dice import PythonDiceInterpreter
interpreter = PythonDiceInterpreter()
program = [
"VAR a_name = d6 + 10",
"VAR b_name = d6 - 10"
]
a_name = interpreter.max(program)["a_name"]
b_name = interpreter.min(program)["b_name"]
print(a_name, b_name)
> 16 -9
interpreter = python_dice_interpreter.PythonDiceInterpreter()
program = [
"VAR save_roll = d20",
"VAR burning_arch_damage = 10d6 + 10",
"VAR pass_save = ( save_roll >= 10 ) ",
"VAR damage_half_on_save = burning_arch_damage // (pass_save + 1)",
"damage_half_on_save"
]
im = interpreter.get_histogram(program)
im.show()
Syntax
Dice
<number of dice to roll>d<number of sides on the dice>
4d10
d6
1d%
30dF
2d[1,1,2,3,5,8]
number of dice is missing will be treated as one.
number of sides can also be:
- % for 100.
- F for fate dice [-1,0,1].
- custom dice with a comma separated list of side values in [ ] square brackets (trailing comma allowed).
- range of values d[1,2,3,4,5] == d[1-5] ==d5
- d[-5,-4,-3,-2] == d[-5--2] == d[-2--5]
- multiplier for many equal sides d[1,1,1,1,1,1,1,8] == d[1*7, 8]
- d[1,1,1,2,2,3,3,4] == d[1-3*2,1,4]
Keep Drop
<number of dice to roll>d<number of sides on the dice>[k for keep d for drop]<number of dice to keep or drop>
2d20k1 roll 2 d20's take the highest 1
16d%k10 roll 16 d% keep the hightest 10
10d[-1,1]d5 roll 10 d[-1,1]'s drop the highest 5
2dFd1 roll 2 dF's drop the highest 1
If the number of dice to keep is set above the number of dice to roll it will keep all dice.
If the number to drop is equal or greater then the number of dice to roll it will always roll 0.
If the number of dice to keep is set to zero then it will always roll 0.
If the number of dice to drop is set to zero then it will be ignored.
Set a var
VAR lower_case_name = 1
VAR name = 4d20
add, subtract, multiply, integer division
VAR name = 1 + 2d3 - 3 * 4d2 // 5
parenthesis
VAR out = 3 * ( 1 + 1d4 )
binary operator
VAR a = 1d4 == 1
VAR b = 1d4 != 1
VAR c = 1d4 <= 2
VAR d = 1d4 < 3
VAR e = 1d4 >= 2
VAR f = 1d4 > 2
VAR g = (1d4 >= 2) AND !(1d20 == 2)
VAR h = (1d4 >= 2) OR !(1d20 == 2)
abs
VAR abs = ABS( 1d6 - 1d6 )
Min and Max
MAX(4d7, 2d10)
MIN(50, d%)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.