Sha256: d9d1d7ce6b304f29f17862ac3edf239f271787d9e07f7aa5ec5e543233bba5df

Contents?: true

Size: 682 Bytes

Versions: 3

Compression:

Stored size: 682 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.4 lib/split/algorithms/block_randomization.rb
split-4.0.3 lib/split/algorithms/block_randomization.rb
split-4.0.2 lib/split/algorithms/block_randomization.rb