Sha256: c3a6748894e401275834b538f4bc9100078275f035f0e9542f53b397334dec7f

Contents?: true

Size: 673 Bytes

Versions: 3

Compression:

Stored size: 673 Bytes

Contents

# frozen_string_literal: true

# Selects alternative with minimum count of participants
# If all counts are even (i.e. all are minimum), samples from all possible alternatives

module Split
  module Algorithms
    module BlockRandomization
      class << self
        def choose_alternative(experiment)
          minimum_participant_alternatives(experiment.alternatives).sample
        end

        private

        def minimum_participant_alternatives(alternatives)
          alternatives_by_count = alternatives.group_by(&:participant_count)
          min_group = alternatives_by_count.min_by { |k, v| k }
          min_group.last
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
split-4.0.1 lib/split/algorithms/block_randomization.rb
split-4.0.0.pre2 lib/split/algorithms/block_randomization.rb
split-4.0.0.pre lib/split/algorithms/block_randomization.rb