get all combinations for any set of dice
Project description
dicetables v4.0.3
Calculate the Combinations For Any Set of Dice
Have you ever wondered what the chances were for killing that 25 hp creature with your lvl-5 fireball? Of course you have(it’s 3.24%. Good luck with that). What about if you could use your loaded dice that roll 6 twice as often. We’ve got you covered (still only a 10% chance). Want to make sure you’ll win a bet on a number spread for DND dice randomly grabbed from a bag? No problem(“i’ll bet you can’t roll 150-200 on 7D4, 4D8, 5D12 and 4D20” … because it’s a 0.3% chance). Ever wondered what would happen if you flipped a coin a thousand times? (Your chance of flipping heads more than 600 times is 0.000000009%.)
Impress your friends. Wow the gender of your choice - with …. DICETABLES!!!
Getting Started
This module has no dependencies and no requirements. So to get started, simply:
$ pip install dicetables
or:
$ git clone https://github.com/eric-s-s/dice-tables.git
$ cd dice-tables
$ python setup.py install
The basic objects to use are DiceTable or DetailedDiceTable, and any of the dice classes. They are:
Die
ModDie
WeightedDie
ModWeightedDie
Modifier
StrongDie
Exploding
ExplodingOn
BestOfDicePool
WorstOfDicePool
UpperMidOfDicePool
LowerMidOfDicePool
for details about the dice, see The Dice. for details about the dice-tables see DiceTable and DetailedDiceTable
These are all immutable objects. When you add dice to a DiceTable, it returns a new object and
doesn’t alter the original. Use the DiceTable.new() class method to create an empty DiceTable.
>>> import dicetables as dt
>>> empty = dt.DiceTable.new()
>>> empty
<DiceTable containing []>
>>> empty.add_die(dt.Die(6), times=10)
<DiceTable containing [10D6]>
>>> empty
<DiceTable containing []>
>>> table = empty.add_die(dt.Die(4), times=3)
>>> table = table.add_die(dt.Die(10), times=5)
>>> table.get_list()
[(Die(4), 3), (Die(10), 5)]
>>> print(table.get_dict()) # This is each roll and how many times it occurs.
{8: 1,
9: 8,
10: 36,
11: 120,
12: 327,
...
...
55: 3072,
56: 1608,
57: 768,
58: 327,
59: 120,
60: 36,
61: 8,
62: 1}
To get more detailed information, use EventsCalculations. It can get the mean, stddev, a nice string of the combinations, points and axes for graphing, and stats for any set of rolls.
>>> calculator = dt.EventsCalculations(table)
>>> calculator.mean()
35.0
>>> calculator.stddev(decimal_place=8)
6.70820393
>>> calculator.stats_strings(list(range(8, 20)) + [35] + list(range(50, 63)))
StatsStrings(query_values='8-19, 35, 50-62',
query_occurrences='515,778',
total_occurrences='6,400,000',
one_in_chance='12.41',
pct_chance='8.059')
>>> calculator.percentage_points()
[(8, 1.5624999999999997e-05),
(9, 0.00012499999999999998),
(10, 0.0005625),
...
(59, 0.001875),
(60, 0.0005625),
(61, 0.00012499999999999998),
(62, 1.5624999999999997e-05)]
>>> big_table = dt.DetailedDiceTable.new().add_die(dt.Die(6), 1000)
>>> print(big_table.calc.full_table_string()) # DetailedDiceTable owns an EventsCalculations
1000: 1
1001: 1,000
1002: 500,500
1003: 1.672e+8
1004: 4.192e+10
1005: 8.417e+12
...
3513: 1.016e+776
3514: 1.012e+776
3515: 1.007e+776
3516: 1.001e+776
3517: 9.957e+775
3518: 9.898e+775
...
5998: 500,500
5999: 1,000
6000: 1
You can now roll events with a Roller
>>> events = dt.DiceTable.new().add_die(dt.Die(6)) >>> roller = dt.Roller(events) >>> roller.roll() in [1, 2, 3, 4, 5, 6] True
That should get you started. For details see http://dice-tables.readthedocs.io/en/latest/
and the github repository at https://github.com/eric-s-s/dice-tables
Local Development
If you want to contribute, you’ll need to install the dev requirements.
$ git clone https://github.com/eric-s-s/dice-tables.git
$ cd dice-tables
$ pip install --upgrade pip && pip install -r dev.requirements.txt
$ pytest . --cov=dicetables
$ pre-commit install
$ pre-commit run -a
To build the docs:
$ sphinx-build -M html docs build
and then open ./build/html/index.html in your browser
to build a distribution:
$ python -m build --sdist
$ python -m build --wheel
and then you can pip install them directly.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dicetables-4.0.3.tar.gz.
File metadata
- Download URL: dicetables-4.0.3.tar.gz
- Upload date:
- Size: 202.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11a5764f140e2f33c442e3bcc9cef8da7501e6213ed9873860d36dcb77d6cccb
|
|
| MD5 |
1a0770779bca3b915bfb47b60b94aa49
|
|
| BLAKE2b-256 |
538523649a78cef6f3f586e86a4031a6b48a2cee0c7012138e9942282346a811
|
Provenance
The following attestation bundles were made for dicetables-4.0.3.tar.gz:
Publisher:
release-jobs.yaml on eric-s-s/dice-tables
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dicetables-4.0.3.tar.gz -
Subject digest:
11a5764f140e2f33c442e3bcc9cef8da7501e6213ed9873860d36dcb77d6cccb - Sigstore transparency entry: 155557837
- Sigstore integration time:
-
Permalink:
eric-s-s/dice-tables@4bc0a9e49fcc406b51e55d71e988eb335d63cd00 -
Branch / Tag:
refs/tags/4.0.3 - Owner: https://github.com/eric-s-s
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-jobs.yaml@4bc0a9e49fcc406b51e55d71e988eb335d63cd00 -
Trigger Event:
release
-
Statement type:
File details
Details for the file dicetables-4.0.3-py3-none-any.whl.
File metadata
- Download URL: dicetables-4.0.3-py3-none-any.whl
- Upload date:
- Size: 37.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b9aa39d1d7a09d00c13834cf05e128177129936268b5866c70841006d9d3267
|
|
| MD5 |
10d1f1dc5bd7893e4c9830cfacbbad01
|
|
| BLAKE2b-256 |
964fc823ee184eb2ed1f1b39497e9fa8dc21334e1c249c2e780d087fc1d30ce5
|
Provenance
The following attestation bundles were made for dicetables-4.0.3-py3-none-any.whl:
Publisher:
release-jobs.yaml on eric-s-s/dice-tables
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dicetables-4.0.3-py3-none-any.whl -
Subject digest:
5b9aa39d1d7a09d00c13834cf05e128177129936268b5866c70841006d9d3267 - Sigstore transparency entry: 155557840
- Sigstore integration time:
-
Permalink:
eric-s-s/dice-tables@4bc0a9e49fcc406b51e55d71e988eb335d63cd00 -
Branch / Tag:
refs/tags/4.0.3 - Owner: https://github.com/eric-s-s
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-jobs.yaml@4bc0a9e49fcc406b51e55d71e988eb335d63cd00 -
Trigger Event:
release
-
Statement type: