Class: TrailGuide::Algorithms::Weighted

Inherits:
Algorithm
  • Object
show all
Defined in:
lib/trail_guide/algorithms/weighted.rb

Instance Attribute Summary

Attributes inherited from Algorithm

#experiment

Instance Method Summary collapse

Methods inherited from Algorithm

choose!, #initialize

Constructor Details

This class inherits a constructor from TrailGuide::Algorithms::Algorithm

Instance Method Details

#choose!(**opts) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/trail_guide/algorithms/weighted.rb', line 4

def choose!(**opts)
  reference = rand * variants.sum(&:weight)
  variants.each do |variant|
    return variant if variant.weight >= reference
    reference -= variant.weight
  end
end