class Array def sum(&block) inject(&(block_given? ? block : lambda{|s,v| s + v})) end def mean(&block) sum(&block).to_f / size end def deviation # sqrt( e(x^2) - (e(x))^2 ) Math.sqrt( mean{|sum, x| sum + x ** 2 } - mean ** 2 ) end end