module Split::Algorithms::WeightedSample
Public Class Methods
choose_alternative(experiment)
click to toggle source
# File lib/split/algorithms/weighted_sample.rb, line 5 def self.choose_alternative(experiment) weights = experiment.alternatives.map(&:weight) total = weights.inject(:+) point = rand * total experiment.alternatives.zip(weights).each do |n,w| return n if w >= point point -= w end end