Metadata-Version: 2.1
Name: randomness
Version: 0.2.0
Summary: Provide several randomness sources in Python with a common API
Home-page: https://github.com/blubberdiblub/randomness
Author: Niels Boehm
Author-email: blubberdiblub@gmail.com
License: MIT
Project-URL: Source, https://github.com/blubberdiblub/randomness
Project-URL: Tracker, https://github.com/blubberdiblub/randomness/issues
Description: Randomness Sources for Python
        =============================
        
        
        Current Features
        ----------------
        
        * unified API to randomness sources
        * API access to the system's true randomness generator
        * a list of randomness providers to choose from
        * provider flags which you can filter for
        
        
        Planned Features
        ----------------
        
        * comprehensive tests for randomness quality (dieharder, ENT, ...)
        * more PRNGs (Wichmann-Hill, xorshift, ...)
        * more TRNGs (VIA Padlock RNG, external hardware, ...)
        * better API to filter and sort providers
        * choice between wasteful and conserving usage of random bits,
          the latter most likely with a mixin
        * adapter to provide the Numpy API for all randomness sources,
          most likely by way of a mixin
        
        
        Usage
        -----
        
        You can instantiate a randomness source directly if you know it's there
        (or if you handle the exception in case it's not):
        
        ```python3
        from randomness import URandom
        
        try:
            from randomness import Random
        
        except ImportError:
            pass
        
        random = URandom()
        ```
        
        Or you can peruse the list of providers and select one out of those
        (possibly filtering the list first):
        
        ```python3
        from randomness import PROVIDERS, ProviderFlag
        
        # filter randomness providers
        my_providers = [provider for provider in PROVIDERS
                        if provider.flags & ProviderFlag.NEVER_BLOCKING]
        
        # dump provider names
        for provider in my_providers:
            print(provider.name)
        
        # instantiate a randomness context
        chosen_provider = my_providers[0]
        random = chosen_provider.cls()
        ```
        
        From this point forward usage is the same as if you had done
        `from random import Random; random = Random()`.
        
        ```python3
        # perform a die roll
        die_result = random.randint(1, 6)
        print(die_result)
        
        # select a random cheese
        CHEESE_SHOP_PRODUCTS = ["Tilsit", "Cheddar", "Roquefort", "Gouda"]
        cheese = random.choice(CHEESE_SHOP_PRODUCTS)
        print(cheese)
        
        # draw lottery numbers
        amount_of_numbers = 49
        amount_to_draw = 6
        series = random.sample(range(1, amount_of_numbers + 1),
                               amount_to_draw)
        print(series)
        ```
        
Keywords: randomness,random,RNG,entropy
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: rdrand
Provides-Extra: test
