module Split::Algorithms::Whiplash
Public Class Methods
choose_alternative(experiment)
click to toggle source
# File lib/split/algorithms/whiplash.rb, line 10 def choose_alternative(experiment) experiment[best_guess(experiment.alternatives)] end
Private Class Methods
arm_guess(participants, completions)
click to toggle source
# File lib/split/algorithms/whiplash.rb, line 16 def arm_guess(participants, completions) a = [participants, 0].max b = [participants-completions, 0].max s = SimpleRandom.new; s.set_seed; s.beta(a+fairness_constant, b+fairness_constant) end
best_guess(alternatives)
click to toggle source
# File lib/split/algorithms/whiplash.rb, line 22 def best_guess(alternatives) guesses = {} alternatives.each do |alternative| guesses[alternative.name] = arm_guess(alternative.participant_count, alternative.all_completed_count) end gmax = guesses.values.max best = guesses.keys.select { |name| guesses[name] == gmax } best.sample end
fairness_constant()
click to toggle source
# File lib/split/algorithms/whiplash.rb, line 32 def fairness_constant 7 end