如何计算特定数字范围内的所有缺失值 其中缺少的数字等于 next 和 previous 的 平均值 给定输入范围的值
示例
缺失值数= 2
数组: [5,?,?,20]
结果: 5,10,15,20
简单地做(5 + 25)/ 4 + 1,即缺少值+1会给您5,我们将其加到我们的第一个值中会得到5 10 15 20,但不适用于其他示例,例如
[6,?,?,?,20] (缺少3个值)
答案 0 :(得分:3)
也许您可以尝试计算已知的第一个和最后一个数字之间的差,在示例中为20-5 = 15,现在将其除以要获取最后一个的“步数”即可一个(缺失数字的数量+ 1),在示例中为15/3 = 5,现在您只需将该数量添加到每个元素中即可得到下一个。
类似这样的东西:
[5,(5 + 5),((5 + 5)+5),20]
您可以验证它是否也适用于第二个示例,并且缺少3个值。
答案 1 :(得分:3)
您的条件是每个数字等于下一个和上一个数字的平均值,您可以这样写:
x i =( x i +1 < / sub> + x i -1 )/ 2
可以很容易地重新排列为:
x i - x i -1 = x i +1 - x i
换句话说,相邻数字之间的差异都相同。
所以这只是一个简单的线性插值。正如您用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