/stream_sampler

Primary LanguageRubyMIT LicenseMIT

StreamSampler - a gem to add stream sampling to Ruby classes.

This gem adds stream sampling (aka reservoir sampling) to Ruby. To use, add the gem to your Gemfile (or require it explicitly), and call the StreamSampler.reservoir_sample method:

require 'stream_sampler`
# takes a 10 item sample from a stream of items:
items = (1..1000).to_a
StreamSampler.reservoir_sample(items, 10)

As a special case, if ActiveRecord and ActiveSupport are defined, the stream sampling methods will be added as class methods on ActiveRecord::Base, so you can do things like this:

require 'stream_sampler'
User.where(age: (18..65)).reservoir_sample(10)