Quantum random numbers
Project description
Quantum random numbers in Python
Use the Python random module with real quantum random numbers from ANU Quantum Numbers.
Usage
Import qrandom and use it like the standard random module:
>>> import qrandom
>>> qrandom.random()
0.15357449726583722
>>> qrandom.sample(range(10), 2)
[6, 4]
>>> qrandom.gauss(0.0, 1.0)
-0.8370871276247828
You can also use the class qrandom.QuantumRandom. It has the same
interface as random.Random.
There is also a NumPy interface (implemented using RandomGen) but it is not fully tested:
>>> from qrandom.numpy import quantum_rng
>>> qrng = quantum_rng()
>>> qrng.random((3, 3)) # use like numpy.random.default_rng()
array([[0.37220278, 0.24337193, 0.67534826],
[0.209068 , 0.25108681, 0.49201691],
[0.35894084, 0.72219929, 0.55388594]])
Installation
pip install quantum-random
The minimum supported version of Python is 3.9.
The NumPy interface is optional. To include it:
pip install 'quantum-random[numpy]'
Setting the ANU Quantum Numbers API key
ANU Quantum Numbers requires an API key. You can get a free trial or pay for a key here.
You can set the key in order of precedence as follows:
- Set the
QRANDOM_API_KEYenvironment variable. - Write the key to
qrandom.iniusing theqrandom-initsetup utility (included with the package). By default, the INI file is saved in your home config directory (e.g.,~/.config/in Linux) andqrandomwill find it without you having to set any environment variables. If you choose to save to a different location, you must setQRANDOM_CONFIG_DIR.
The config file is ignored if QRANDOM_API_KEY is set.
Pre-fetching batches
Quantum numbers are fetched from the API in batches of 1024 as needed. Use
qrandom.fill(n) to pre-fetch n batches at the start of your computation.
Implementation details
The default pseudo-random generator is replaced by calls to
the ANU API. The qrandom module exposes a class derived from random.Random with a
random() method that outputs quantum floats in the range [0, 1)
(converted from 64-bit integers). Overriding random.Random.random
is sufficient to make the qrandom module behave mostly like the
random module as described in the Python docs. The exceptions
are getrandbits() and randbytes(): these are not available in
qrandom. Because getrandbits() is not available, randrange() cannot
produce arbitrarily long sequences. Finally, the user is warned when seed()
is called because the quantum generator has no state. For the same reason,
getstate() and setstate() are not implemented.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quantum_random-1.5.0.tar.gz.
File metadata
- Download URL: quantum_random-1.5.0.tar.gz
- Upload date:
- Size: 242.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b6b80108a59ade2c7147d53bde93059a9440f4a78d07de0a1b70d264f74fd6e
|
|
| MD5 |
4140784981f9a825d8db88e355f80b69
|
|
| BLAKE2b-256 |
e4e0ef4f979c5f1fe5816d9d8aaf93a73bfb7a5adcc539cab58354180ac9cf43
|
File details
Details for the file quantum_random-1.5.0-py3-none-any.whl.
File metadata
- Download URL: quantum_random-1.5.0-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afd6356ddf8b883ebe79b55f3b859f855a478965427cc18d2b55d529e50627ce
|
|
| MD5 |
79ae8f398aa0f9b07dc81bb46568e638
|
|
| BLAKE2b-256 |
1688e1302de47c641ddac00ff13d43ec119341262ff26532bb7f99292de2137a
|