Skip to content
This repository

Ruby gem to generate random numbers from web providers of real randomness sources like radioactive decay or atmospheric noise.

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 spec rdoc August 18, 2010
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 MIT-LICENSE.txt
Octocat-spinner-32 README.rdoc
Octocat-spinner-32 Rakefile
Octocat-spinner-32 random_sources.gemspec

Random Sources

Random Sources is a Ruby gem that provides genuine random numbers, generated by processes fundamentally governed by inherent uncertainty instead of some pseudo-random number algorithm. It uses http services from different online providers.

Build status Gem Version

Getting started

Install the gem:

$ [sudo] gem install random_sources

Then depending on your project you may:

Require the gem (if a ruby project):

require 'random_sources'

or add it to your Gemfile (if you're on Rails):

gem 'random_sources', :git => 'git://'


Your entry point is the RandomSources module. With it you can get a list of supported providers and instantiate any of them:

RandomSources.list                   #=> "HotBits, RandomOrg"

RandomSources.generator 'RandomOrg'  #=> <RandomSources::RandomOrg>

Once you have your generator you can ask for the random bytes:

generator = RandomSources.generator 'RandomOrg'

# five integers between 1 and 100: 
generator.integers(:num => 5, :min => 1, :max => 100)  
# => [45, 61, 22, 96, 70]

# two strings of 10 unique characters including digits and uppercase letters:
generator.strings(:num => 2, :unique => 'on', :digits => 'on', :upperalpha => 'on', :loweralpha =>'off')
# => ["6ESR61Y1", "K7520E6L"]

You can get integers, strings, sequences, bytes, etc… For a list of all the options of any supported source, check the doc in the wiki



Juanjo Bazán


Copyright © 2010 Juanjo Bazán


Released under the MIT license.

Something went wrong with that request. Please try again.