module QuantumRNG
QuantumRNG
gets random numbers from the ANU Quantum RNG API.
Gem Version
Constants
- VERSION
Public Class Methods
float(max, count = 1)
click to toggle source
# File lib/quantum_rng.rb, line 42 def self.float(max, count = 1) random(count).map { |r| (r * max).to_f } end
hex16(block_size, count = 1)
click to toggle source
# File lib/quantum_rng.rb, line 25 def self.hex16(block_size, count = 1) make_request( -> { Array.new(count).map { SecureRandom.hex block_size } }, length: count, type: 'hex16', size: block_size ) end
int(max, count = 1)
click to toggle source
# File lib/quantum_rng.rb, line 38 def self.int(max, count = 1) random(count).map { |r| (r * max).to_i } end
random(count = 1)
click to toggle source
# File lib/quantum_rng.rb, line 34 def self.random(count = 1) uint16(count).map { |r| r / 65_535.0 } end
uint16(count = 1)
click to toggle source
# File lib/quantum_rng.rb, line 17 def self.uint16(count = 1) make_request( -> { Array.new(count).map { SecureRandom.random_number 65_535 } }, length: count, type: 'uint16' ) end
uint8(count = 1)
click to toggle source
# File lib/quantum_rng.rb, line 9 def self.uint8(count = 1) make_request( -> { Array.new(count).map { SecureRandom.random_number 255 } }, length: count, type: 'uint8' ) end
Private Class Methods
make_request(backup, queries)
click to toggle source
# File lib/quantum_rng.rb, line 48 def self.make_request(backup, queries) q = URI.encode_www_form(queries) data = Curl.get('http://qrng.anu.edu.au/API/jsonI.php', q).body packet = JSON.parse(data, symbolize_names: true) if packet[:success] packet[:data] else backup.call end rescue backup.call end