在细分区间内计算指数?

时间:2013-11-13 11:38:57

标签: c++ arrays algorithm intervals

以下列方式考虑在[x, y]个样本中同等细分的值n的间隔: subdivision

y可以更大,等于或小于x。 现在,我们在zx之间选取值y

问题:计算i的索引z的公式是什么? (如果x = y,则公式应返回0n-1)(我重申:y可以更大,等于或小于x。)< / p>

例如:如果x = - 5y = -10n = 5,那么z = -7.5i = 2(如果z = -7,{{1}但是如果i = 2z = -8)。

3 个答案:

答案 0 :(得分:2)

您可以将间隔的长度计算为:

  len = y - x

然后您可以计算每个元素的增加量

  increase = len / n;

现在你有i = (z - x) / increase。简而言之,您计算每个元素的值增加多少,并计算从xz需要多少次增加。

编辑:如果你真的需要C++中的解决方案,请注意以双倍的方式进行所有计算。另请注意,i的值应为四舍五入的整数。

答案 1 :(得分:0)

回答逻辑(IN java):

  

i = Math.abs(Math.ceil(z - Math.min(x,y)));

答案 2 :(得分:0)

if(x>y) high = x low = y

else high = y low = x

if(y>=x)
    i = ceil((z-low+1)/(high-low+1)*n)-1

else i = ceil((high-z+1)/(high-low+1)*n)-1