class Skillz::Player
Attributes
skill_level[RW]
skill_uncertainty[RW]
temporary_id[RW]
Public Class Methods
new(skill_level=nil, uncertainty=nil, last_match_time=nil, temporary_id=nil)
click to toggle source
# File lib/skillz/player.rb, line 8 def initialize(skill_level=nil, uncertainty=nil, last_match_time=nil, temporary_id=nil) @skill_level = skill_level || Skillz::INITIAL_SKILL_LEVEL @skill_uncertainty = uncertainty || Skillz::UNCERTAINTY @temporary_id = temporary_id || SecureRandom.uuid adjust_for_inactivity(last_match_time) if last_match_time end
Public Instance Methods
adjusted_skill_level()
click to toggle source
# File lib/skillz/player.rb, line 15 def adjusted_skill_level @skill_level - (@skill_uncertainty * 0.5) end
Private Instance Methods
adjust_for_inactivity(last_match_time)
click to toggle source
# File lib/skillz/player.rb, line 21 def adjust_for_inactivity(last_match_time) days = (Time.now - last_match_time).to_i / (24 * 60 * 60) return if days <= 25 time_decay = 1 - Math.exp((days * -1.0)/365) time_decay *= [[skill_uncertainty, 4].max, 10].min @skill_uncertainty += time_decay end