Package: pydie
Uses ‘quantum‘ random numbers to
generate a result from an n-numbered ‘roll’ from an n-sided die adding
any specified modifiers.DependenciesDocopt– Command Line InterfaceInstallationInstall pip? See:How to install
Pip.Then simply:pip install pydieUsageYou can use this package from the cli or within python.To use it within python:importpydiepydie.roll('1d3','2d6','3d12+2')# should return something like:# [#   {#     'raw': [1],#     'modifiers': [],#     'multiplier': '1',#     'die': '3',#     'rolls': [1],#     'argv': '1d3'#   },#   {#     'raw': [1, 1],#     'modifiers': [],#     'multiplier': '2',#     'die': '6',#     'rolls': [1, 1],#     'argv': '2d6'#   },#   {#     'raw': [1, 12, 5],#     'modifiers': ['+2'],#     'multiplier': '3',#     'die': '12',#     'rolls': [3, 14, 7],#     'argv': '3d12+2'#   }# ]Current cli usage pattern:"""Usage:
    pydie roll [-r|--result-info] <roll>...
    pydie (-v | --version)
    pydie (-h | --help)

    Description:
        Generate a random n-sided for n-die roles.

    Commands:
        roll  Roll any kind of die to receive a randomized dice roll.
              - Roll command format {multiplier}{die}[{modifiers}...]...
              - Multipler is required, min 1; 0 will cause error
              - "+", plus, or "-", minus, is required before each modifier

    Examples:
        pydie roll 1d3               (single roll no mods)
        pydie roll 2d4+1             (single roll mod)
        pydie roll 3d6-1+3           (single roll with multi-mods)
        pydie roll 4d8+2 5d12+1-2+3  (multi roll, separated with a space)

    Options:
        -r --result-info    Display full result information (optional)
        -v --version        Display the version number
        -h --help           Display this screen
"""Backstory“Goddamnit! I rolled a 1 again!”Unsatisfied with an implementation of a ‘random’ die rolling bit of an
online Dungeons & Dragons service I decided torollmy own. (pun
intended)I wondered, “How can I get truly random numbers?” While the respectiverandommodule is well endowed and probably good enough, what’s the
point if I simply typerandomand call it a day? Besides, I know
that computer generated random numbers are really onlypseudorandomnumbers anyway and that just makes me feel dirty inside. Unacceptable!No, to truly achieve greatness I’ll need numbers as random as I can get.
But how?! Well I’ll tell you how. Introducing theANU Quantum Random
Number Server. Here’s a bit from
their homepage:Welcome to the ANU Quantum Random Numbers ServerThis website offers true random numbers to anyone on the internet.
The random numbers are generated in real-time in our lab by
measuring the quantum fluctuations of the vacuum. … By carefully
measuring these fluctuations, we are able to generate ultra-high
bandwidth random numbers.Eureka! Now that I have random numbers, all I needed was to employ a bit
ofdocopt[read: amazing] magic, some dogey
math and I’ll have a niftly (likely useless) little commandline tool!Other Projectshttps://pypi.python.org/pypi/quantumrandom/https://github.com/pcragone/anurandomDisclaimerOk, full-disclosure, I majored in something other than math and
probability is hard. So instead, I borrowed this example fromANU’s
Site.Put N balls into a bag numbered between Minimum number and Maximum
number. Mix the balls thoroughly. Pick out one ball and write down
its number. Repeat the process m times (either with replacement or
without replacement).–http://qrng.anu.edu.au/Lucky.phpThrough completely unscientific means I have judged this technique
acceptable.Changelog0.2.5Removed “m” from roll argvAdded better cli errors0.2.4Fixed bug in version util that was breaking installAdded docstrings0.2.3Added a more convenient “roll” method for use in python0.2.1Refactored roll handling out of cli.py0.2.0Major refactorAdded multirollSimplified roll argv