PyRando
PyRando is a Python 3 module for interacting with the random.org JSON API. PyRando can generate random values using basic methods as well as digitally signed random values using the signed methods.
PyRando is compatible with Python 3.6+.
Installation
To install pyrando, use pip3
:
$ pip3 install pyrando
Getting Started
To interact with random.org, you will first need to get an api key. Go to api.random.org and click on Get a Beta Key. Once you have an API key, using PyRando is quite straightforward.
For example:
>>> from pyrando import PyRando
>>> pr = PyRando('YOUR_API_KEY')
>>> pr.integers(5, 0, 10)
[0, 7, 10, 3, 5]
Basic Methods
Integers
The integers
method generates true random integers within a user-defined range. Integer requests take up to four positional arguments:
-
n
- How many random integers you need. Must be within the [1,1e4] range -
min
- The lower boundary for the range. Must be within the [-1e9,1e9] range -
max
- The upper boundary for the range. Must be within the [-1e9,1e9] range -
base
(optional) - If not provided, the defaultbase
is set to 10. Allowed values for base are 2, 8, 10, and 16
Examples:
pr.integers(10, 1, 6)
pr.integers(10, 1, 100, 2)
Decimals
The decimals
method generates true random decimal fractions from a uniform distribution across the [0,1] interval with a user-defined number of decimal places. Decimal requests take three positional arguments:
-
n
- How many random decimal fractions you need. Must be within the [1,1e4] range -
decimalPlaces
- The number of decimal places to use. Must be within the [1,20] range
Example:
pr.decimals(10, 8)
Gaussians
The gaussians
method generates true random numbers from a Gaussian distribution. Integer requests take four positional arguments:
-
n
- How many random numbers you need -
mean
- The distributions mean. Must be within the [1,1e4] range -
standardDeviation
- The distributions standard deviation. Must be with the [-1e6,1e6] range -
significantDigits
- The number of significant digits to use. Must be within the [2,20] range
Example:
pr.gaussians(4, 0.0, 1.0, 8)
Strings
The strings
method generates true random strings. String requests take three positional arguments:
-
n
- How many random strings you need. Must be within the [1,1e4] range -
length
- The length of each string. Must bbe within the [1,20] range. All strings will be of the same length -
characters
- A string that contains the set of characters that are allowed to occur in the random stings. The maximum number of characters is 80
Example:
pr.strings(10, 20, 'abcdefghijklmnopqrstuvwxyz')
UUIDs
The uuids
method generates version 4 true random UUIDs. UUID requests take a single positional argument:
-
n
- How many random UUIDs you need. Must be within the [1,1e3] range
Example:
pr.uuids(1)
Blobs
The blobs
method generates BLOBs containing true random data. Blob requests take up to three positional argument:
-
n
- How many random blobs you need. Must be within the [1,100] range -
size
- The size of each blob, measured in bits. Must be within the [1,1048576] range and divisible by 8. The total size of all requested blobs much not exceed 1,048,576 bits (128KiB) -
format
- Specifies the format in which the blobs will be returned. Values allowed arebase64
andhex
. If not value is provided, the default value ofbase64
is used.
Examples:
pr.blobs(1, 2048)
pr.blobs(1, 1024, 'hex')
Usage
The usage
method returns information related to the usage of a given API.
Example:
pr.usage()
Signed Methods
Usage of signed methods is quite similar to that of basic methods. For example, to use signed methods you could input the commands as follows:
>>> pr.signed_integers(10, 1, 6)
>>> pr.signed_decimals(10, 8)
>>> pr.signed_gaussians(4, 0.0, 1.0, 8)
>>> pr.signed_strings(10, 20, 'abcdefghijklmnopqrstuvwxyz')
>>> pr.signed_uuids(1)
>>> pr.signed_blobs(1, 2048)
The difference between basic methods and signed methods is the response. Instead of just a list with the random values, signed methods return a dictionary with values for the following keys data
, random
, and signature
. The random
and signature
values can be used to authenticate signed values.
To verify a response, use the verify_signature
method. The method take the random
and signature
values as arguments and responds with a boolean value of either True
or False
. For example:
>>> signed_ints = pr.signed_integers(10, 1, 6)
>>> pr.verify_signature(signed_ints['random'], signed_ints['signature'])
True