class Accumulators::Mean
Attributes
count[R]
mean[R]
Public Class Methods
new()
click to toggle source
# File lib/accumulators/mean.rb, line 6 def initialize @count = 0 @mean = 0.0 end
Public Instance Methods
add(rhs)
click to toggle source
# File lib/accumulators/mean.rb, line 11 def add(rhs) if rhs.is_a? Numeric value_to_add = rhs.to_f @mean = @mean + (value_to_add - @mean)/(@count + 1) @count += 1 elsif rhs.is_a? Accumulators::Mean sum = @mean * @count rhs_sum = rhs.mean * rhs.count @count = @count + rhs.count @mean = (sum + rhs_sum) / @count else raise ArgumentError.new("You may not add #{rhs.class} to #{self.class}") end end