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)