class ABSwitcher::Switcher
Constants
- HEX_MAX
Attributes
major_probability[R]
major_value[R]
minor_value[R]
Public Class Methods
new(ratio, another_ratio = nil, major: true, minor: false)
click to toggle source
# File lib/ab_switcher/switcher.rb, line 7 def initialize(ratio, another_ratio = nil, major: true, minor: false) @major_probability = calc_major_probability(ratio, another_ratio) @major_value, @minor_value = major, minor end
Public Instance Methods
hex_switch(hex_str)
click to toggle source
# File lib/ab_switcher/switcher.rb, line 12 def hex_switch(hex_str) hex = hex_str[0].hex rescue HEX_MAX flt = hex / HEX_MAX if flt <= major_probability major_value else minor_value end end
Private Instance Methods
calc_major_probability(ratio, another_ratio = nil)
click to toggle source
# File lib/ab_switcher/switcher.rb, line 25 def calc_major_probability(ratio, another_ratio = nil) ratio = ratio.to_f probability = if another_ratio.nil? convert_ratio_into_probability(ratio) else calc_probability(ratio, another_ratio) end probability > 0.5 ? probability : 1 - probability end
calc_probability(ratio, another_ratio)
click to toggle source
# File lib/ab_switcher/switcher.rb, line 49 def calc_probability(ratio, another_ratio) ratio / (ratio + another_ratio) end
convert_ratio_into_probability(ratio)
click to toggle source
# File lib/ab_switcher/switcher.rb, line 37 def convert_ratio_into_probability(ratio) if ratio.between?(1, 100) # 1 goes here ratio / 100 elsif ratio.between?(0, 1) ratio else # TODO handle raise DOUSHIYOU end end