gpt4 book ai didi

ruby-on-rails - Ruby on Rails 计算百分位数的方法——可以重构吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:15:38 27 4
gpt4 key购买 nike

我编写了一种方法来计算一组数字的给定百分位数,供我正在构建的应用程序使用。通常,用户需要知道一组给定数字的第 25 个百分位数和第 75 个百分位数。

我的方法如下:

def calculate_percentile(array,percentile)
#get number of items in array
return nil if array.empty?

#sort the array
array.sort!

#get the array length
arr_length = array.length

#multiply items in the array by the required percentile (e.g. 0.75 for 75th percentile)
#round the result up to the next whole number
#then subtract one to get the array item we need to return
arr_item = ((array.length * percentile).ceil)-1

#return the matching number from the array
return array[arr_item]

end

这看起来提供了我期望的结果,但任何人都可以重构它或提供改进的方法来返回一组数字的特定百分位数吗?

最佳答案

一些说明:

  • 如果 Array 的特定索引不存在,[] 将返回 nil,因此您的初始检查是否为空 数组 是不必要的。
  • 您不应该排序! Array 参数,因为您会影响 Array 中的项目顺序调用您的方法的代码。请改用 sort(不使用 !)。
  • 你实际上并没有在分配后使用 arr_length
  • Ruby 中不需要最后一行的 return 语句。
  • 没有标准definition for the percentile function (四舍五入可能有很多微妙之处),所以我假设你如何实现它就是你希望它如何表现。因此,我无法真正评论逻辑。

也就是说,您编写的函数可以写得更简洁,同时仍可读。

def calculate_percentile(array, percentile)
array.sort[(percentile * array.length).ceil - 1]
end

关于ruby-on-rails - Ruby on Rails 计算百分位数的方法——可以重构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1100843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com