【问题标题】:Compress a range number by two max percent and min percent [duplicate]将范围数压缩两个最大百分比和最小百分比[重复]
【发布时间】:2021-08-23 23:44:51
【问题描述】:

假设我的范围是 100-1。现在,我想将该范围从顶部压缩 10%,从底部压缩 25%。所以我的最终范围是 90-25。

关于如何将给定从 100 到 1 的任意数字的函数转换为 90-25 范围的任何想法?

【问题讨论】:

  • 啊,好吧,我现在终于明白你的问题了:-D 对我来说,你希望将比率保持在两者之间,而不仅仅是“扔掉新范围之外的所有东西”。感谢您链接到那个!
  • 我没有正确解释自己。我的错。
  • 不用担心 - 很高兴您找到了可行的解决方案!

标签: function math


【解决方案1】:

u 为大数(在您的示例中:100),l 为小数(示例:1),因此您希望将区间/范围/...[1, 100] 转换为缩小一个。

根据通常的数学知识,从底部/顶部删除一些百分比与仅移动该数字相同,因此在您的情况下,您可能希望使用间隔 [l * 0.25, u * 0.9] 而不是 [l, u]。这当然可以推广到所有其他值。

如果您不想要有理数而只想要整数,则必须考虑是否要将更多更少缩小到 25/10%因为你不能准确。

现在使用这个新间隔,您可以使用伪代码创建该函数:

def transform(n, lower, upper):
    interval = [lower * 0.25, upper * 0.9]
    if n in interval:
        return n
    else if n < lower * 0.25:
        return lower * 0.25
    else if n > upper * 0.9:
        return  upper * 0.9

【讨论】:

  • 在您的示例中,我不清楚如何对数字进行转换。我的函数应该类似于 transform(n, u=0.1, l=0.25) 如果 n 为 1,则输出应为 25,但如果 n 为 100,则输出应为 90。
  • 啊好吧,现在我想我明白了,从问题中我并不清楚。所以例如50应该输出50呢?编辑:更新了代码。
猜你喜欢
  • 2017-04-05
  • 1970-01-01
  • 2017-04-06
  • 2013-08-16
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多