Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.gitignore
.travis.yml
Gemfile
Gemfile.lock
MIT-LICENSE.txt
README.rdoc
Rakefile
random_sources.gemspec

README.rdoc

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://github.com/xuanxu/random_sources.git'

Usage

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

Credits

Author

Juanjo Bazán

Copyright

Copyright © 2010 Juanjo Bazán

License

Released under the MIT license.

Something went wrong with that request. Please try again.