Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alephtwo/quantum_rng
A Ruby interface for the ANU Quantum Random Numbers API
https://github.com/alephtwo/quantum_rng
json-api random-number-generators ruby
Last synced: about 2 months ago
JSON representation
A Ruby interface for the ANU Quantum Random Numbers API
- Host: GitHub
- URL: https://github.com/alephtwo/quantum_rng
- Owner: alephtwo
- License: mit
- Archived: true
- Created: 2015-03-16T16:31:46.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-10-06T03:32:25.000Z (about 3 years ago)
- Last Synced: 2024-09-01T12:37:46.015Z (2 months ago)
- Topics: json-api, random-number-generators, ruby
- Language: Ruby
- Homepage: https://rubygems.org/gems/quantum_rng
- Size: 11.7 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# QuantumRNG
A Ruby gem that leverages the [ANU Quantum Random Numbers Server API](http://qrng.anu.edu.au/index.php).# Acknowledgements
This gem exists entirely as an interface to the ANU Quantum Random Numbers API. **All of the heavy lifting is done on their side, and any credit belongs entirely to them.** I have just generalized access to the JSON API.
Please give them a visit: [http://photonics.anu.edu.au/qoptics/Research/qrng.php](http://photonics.anu.edu.au/qoptics/Research/qrng.php)### So, you want random numbers...
Computers are great at creating pseudorandom numbers, but true randomness requires a little bit more effort.That's where the fine folks at the [ANU Quantum Random Numbers Server](http://qrng.anu.edu.au/index.php) come in. They've provided a handy JSON API for accessing what they guess are truly random numbers. You can read more about the science behind this and why they believe they've achieved true randomness at their site.
## Installation
```
gem install quantum_rng
```If you're using Bundler, include the gem in your `Gemfile`:
```
gem 'quantum_rng'
```## Usage
| Method | Argument(s) | Description |
| ------ | :-----------------------: | ----------------------------------------------- |
| uint8 | `count = 1` | `count` integers between 0 and 255 |
| uint16 | `count = 1` | `count` integers between 0 and 65535 |
| hex16 | `block_size`, `count = 1` | `count` hex numbers of `block_size` bytes |
| random | `count = 1` | `count` real numbers between 0 and 1, inclusive |
| int | `max`, `count = 1` | `count` integers in the range `[0, max)` |
| float | `max`, `count = 1` | `count` real numbers in the range `[0, max)` |Every method returns an array of numbers.
## Errors
* If you are unable to connect to the ANU RNG server for any reason, this gem will default to similar interactions using `SecureRandom`. In future versions, this will be allowed as a configuration option.
* Requesting too many numbers (usually where `count > 1025`) or passing invalid arguments will likely cause a RuntimeError. In future versions, this behavior will be softened.## Examples
```ruby
# A single random uint8
QuantumRNG.uint8
# 5 random uint8
QuantumRNG.uint8(5)# A single random uint16
QuantumRNG.uint16
# 5 random uint16
QuantumRNG.uint16(5)# A single 1-byte hex number
QuantumRNG.hex16(1)
# 5 random 1-byte hex numbers
QuantumRNG.hex16(1, 5)# A single random between 0 and 1, inclusive
QuantumRNG.random
# 5 randoms between 0 and 1, inclusive
QuantumRNG.random(5)# A single random int less than 100
QuantumRNG.int(100)
# 5 ints less than 100
QuantumRNG.int(100, 5)# A single random float less than 100
QuantumRNG.float(100)
# 5 random floats less than 100
QuantumRNG.float(100, 5)
```# TODO
Future versions will include better error handling.