我有几个给定属性的记录,我想找到标准偏差.

我该怎么做?

推荐答案

module Enumerable

    def sum
      self.inject(0){|accum, i| accum + i }
    end

    def mean
      self.sum/self.length.to_f
    end

    def sample_variance
      m = self.mean
      sum = self.inject(0){|accum, i| accum +(i-m)**2 }
      sum/(self.length - 1).to_f
    end

    def standard_deviation
      Math.sqrt(self.sample_variance)
    end

end 

测试它:

a = [ 20, 23, 23, 24, 25, 22, 12, 21, 29 ]
a.standard_deviation  
# => 4.594682917363407

01/17/2012:

fixing "sample_variance" thanks to Dave Sag

Ruby相关问答推荐

Ruby - 使用索引值识别和更新数组中的重复项

每次调用返回新的 REST 响应的 Ruby Rspec class_double

在 clojure 中,如何将已排序整数数组划分为连续的分区?

类 SpecificationPolicy 的超类不匹配

Rubymine - 启用行号

如何打开(读写)或创建允许截断的文件?

Encoding::UndefinedConversionError

截断、事务和删除数据库策略的区别

Python 是否在 Ruby 中进行类似于字符串 #{var}的变量插值?

铲子 (<<) 运算符如何在 Ruby 哈希中工作?

在现有 Jekyll 安装中切换主题

相当于 Ruby 中的通过

是什么让 Ruby 变慢了?

在 Ruby 中打开默认浏览器

如何使用密码保护我的 /sidekiq 路由(即需要对 Sidekiq::Web 工具进行身份验证)?

正则表达式,如何匹配多行?

class << self vs self.method with Ruby:什么更好?

正则表达式中的 `?i` 和 `?-i` 是什么意思?

如何在遍历数组时使用 Array#delete?

传递块时 Array#sort 如何工作?