Provide several randomness sources in Python with a common API
Project 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):
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):
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()
.
# 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)
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
randomness-0.2.1.tar.gz
(6.4 kB
view details)
Built Distribution
File details
Details for the file randomness-0.2.1.tar.gz
.
File metadata
- Download URL: randomness-0.2.1.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.0 CPython/3.6.7rc1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73e17e64bc3490259689f89424b130e89a4022f71f90dc1c2c0cbf4f902dbbe6 |
|
MD5 | 55b8489562551e1d63ebb07f4834db27 |
|
BLAKE2b-256 | 628bc8aafbb5c62d1d7b43f0e776ecab89157ebb8c8cc19ceadf27eb911b5973 |
File details
Details for the file randomness-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: randomness-0.2.1-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.0 CPython/3.6.7rc1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 024c7e35fe9d39774515f04a393b43a18cfc780b843a681e0c16ed82f68be33d |
|
MD5 | e42dc891bc3d7177fc8746433bd844eb |
|
BLAKE2b-256 | c0bc41cf1b9cb75a14fc8a30213da468e952264360007bd7c0241fbc70ced12b |