New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dicetables

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dicetables

get all combinations for any set of dice

  • 4.0.3
  • PyPI
  • Socket score

Maintainers
1

.. image:: https://img.shields.io/badge/License-MIT-yellow :target: https://opensource.org/license/MIT

.. image:: https://img.shields.io/badge/Python-3.9%20%7C%203.12%20%7C%203.13-blue

.. image:: https://badge.fury.io/py/dicetables.svg :target: https://badge.fury.io/py/dicetables

.. image:: https://coveralls.io/repos/github/eric-s-s/dice-tables/badge.svg?branch=master :target: https://coveralls.io/github/eric-s-s/dice-tables?branch=master

.. image:: https://static.pepy.tech/badge/dicetables :target: https://pepy.tech/projects/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:

.. code-block:: bash

$ pip install dicetables

or:

.. code-block:: bash

$ 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 <https://dice-tables.readthedocs.io/en/latest/the_dice.html>. for details about the dice-tables see DiceTable and DetailedDiceTable <http://dice-tables.readthedocs.io/en/latest/the_dicetable.html>

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 :code: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 <http://dice-tables.readthedocs.io/en/latest/events_info.html>_. 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.

.. code-block:: bash

$ 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:

.. code-block:: bash

$ sphinx-build -M html docs build

and then open ./build/html/index.html in your browser

to build a distribution:

.. code-block:: bash

$ python -m build --sdist
$ python -m build --wheel

and then you can pip install them directly.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc