Skip to content

Instantly share code, notes, and snippets.

@blacklight
Created November 29, 2018 23:55
Show Gist options
  • Save blacklight/c852ddc3069e89c6b97716204a3529b7 to your computer and use it in GitHub Desktop.
Save blacklight/c852ddc3069e89c6b97716204a3529b7 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
### Get one or more true random numbers using the qrng.anu.edu.au quantum
### random number generator through the available API
import argparse
import json
import requests
_DEFAULT_MIN = 0
_DEFAULT_MAX = 2**16
_DEFAULT_LENGTH = 1
def parse_args():
parser = argparse.ArgumentParser(description='QRand arguments')
parser.add_argument('min', metavar='min', type=int, nargs='?',
default=_DEFAULT_MIN, help='Minimum value (default: 0)')
parser.add_argument('max', metavar='max', type=int, nargs='?',
default=_DEFAULT_MAX, help='Maximum value ' +
'(default: 65536, maximum: 65536)')
parser.add_argument('-l', '--length', dest='length', default=1,
help='Number of random numbers that will be returned ' +
'(default: 1)')
return parser.parse_args()
def get_numbers(min=_DEFAULT_MIN, max=_DEFAULT_MAX, length=_DEFAULT_LENGTH):
URL = 'https://qrng.anu.edu.au/API/jsonI.php'
response = requests.get(URL, params={
'type': 'uint16',
'length': length,
'size': 1,
})
if response.ok:
return [
(n % (max-min)) + min
for n in response.json().get('data', []) ]
else:
raise RuntimeError('Request errored with status {}'.
format(response.status_code))
def main():
args = parse_args()
numbers = get_numbers(min=args.min, max=args.max, length=args.length)
for n in numbers:
print(n)
if __name__ == '__main__':
main()
# vim:sw=4:ts=4:et:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment