gpt4 book ai didi

ruby-on-rails - 将数组缩放到最小值/最大值

转载 作者:行者123 更新时间:2023-12-02 17:16:49 25 4
gpt4 key购买 nike

在 Ruby 中,给定以下数组

[-10, 5, 22, 54, 89, 152]

我将如何获得如下结果,其中最小值为 0,最大值为 100。(此结果是一个猜测,而不是数字应该是什么样子的实际反射(reflect))

[0, 8, 24, 53, 85, 100]

注意:中间的数字也会缩放以适合。

最佳答案

这里有一个简单的方法:

def normalize(list, scale = 100)
return unless (list.length >= 2)

min, max = list.minmax

range = max - min

list.map do |v|
((v - min) * scale / range)
end
end

这不会产生与您预期相同的结果,但我无法确定为什么您会期待这些结果,因为线性缩放值不会给出这些值。下面是一些测试:

list = [-10, 5, 22, 54, 89, 152]

normalize(list)
# => [0, 9, 19, 39, 61, 100]

# Running it again changes nothing
normalize(normalize(list))
# => [0, 9, 19, 39, 61, 100]

list = [-1,0,1]

normalize(list)
# => [0, 50, 100]

关于ruby-on-rails - 将数组缩放到最小值/最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45969471/

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