从给定范围中查找缺失值

Finding the missing values from a given range

如何计算特定数字范围之间的所有缺失值 其中缺失的数字等于 average of nextprevious 给定输入范围的值

例子

缺失值数量 = 2

数组:[5, ?, ?, 20]

结果:5,10,15,20

简单地做 (5+25)/4+1 即缺失值+1 给你 5 我们将其添加到我们的第一个值给出 5 10 15 20 但不适用于

等其他示例

[6,?,?,?,20](3 个缺失值)

也许你可以尝试计算你知道的第一个和最后一个数字之间的差值,例如 20-5=15,现在你只需将它除以你想要的 "steps" 个数要获得最后一个(缺失数字的数量 + 1),示例中为 15/3 = 5,现在您只需将该数量添加到每个元素即可获得下一个。

像这样:

[5, (5+5), ((5+5)+5), 20]

您可以验证它也适用于具有 3 个缺失值的第二个示例。

你的条件是每个数字等于下一个和前一个数字的平均值,你可以写成:

xi = (x i+1 + xi-1) / 2

可以很容易地重新排列为:

xi - xi-1 = xi +1 - xi

也就是说,相邻数字之间的差值都是一样的

所以这只是一个简单的线性插值。由于您已经用 C 标记了它,所以这里有一个简单的 C 函数来评估您的示例:

#include <stdio.h>

void calc_values(float start, float end, int n) {
  int i;
  for(i = 1; i <= n; i++)
    printf("%f\n",
       start + (end - start) * i / (n + 1));
}

int main()
{
   calc_values(6, 20, 3);
   return 0;
}

给出:

9.500000
13.000000
16.500000