Skip to main content

get all combinations for any set of dice

Project description

https://img.shields.io/badge/License-MIT-yellow https://img.shields.io/badge/Python-3.9%20%7C%203.12%20%7C%203.13-blue https://badge.fury.io/py/dicetables.svg https://coveralls.io/repos/github/eric-s-s/dice-tables/badge.svg?branch=master https://static.pepy.tech/badge/dicetables

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dicetables-4.0.3.tar.gz (202.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dicetables-4.0.3-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

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

Hashes for dicetables-4.0.3.tar.gz
Algorithm Hash digest
SHA256 11a5764f140e2f33c442e3bcc9cef8da7501e6213ed9873860d36dcb77d6cccb
MD5 1a0770779bca3b915bfb47b60b94aa49
BLAKE2b-256 538523649a78cef6f3f586e86a4031a6b48a2cee0c7012138e9942282346a811

See more details on using hashes here.

Provenance

The following attestation bundles were made for dicetables-4.0.3.tar.gz:

Publisher: release-jobs.yaml on eric-s-s/dice-tables

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for dicetables-4.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5b9aa39d1d7a09d00c13834cf05e128177129936268b5866c70841006d9d3267
MD5 10d1f1dc5bd7893e4c9830cfacbbad01
BLAKE2b-256 964fc823ee184eb2ed1f1b39497e9fa8dc21334e1c249c2e780d087fc1d30ce5

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page