以下列方式考虑在[x, y]
个样本中同等细分的值n
的间隔:
y
可以更大,等于或小于x
。
现在,我们在z
和x
之间选取值y
。
问题:计算i
的索引z
的公式是什么? (如果x = y
,则公式应返回0
或n-1
)(我重申:y
可以更大,等于或小于x
。)< / p>
例如:如果x = - 5
,y = -10
和n = 5
,那么z = -7.5
,i = 2
(如果z = -7
,{{1}但是如果i = 2
,z = -8
)。
答案 0 :(得分:2)
您可以将间隔的长度计算为:
len = y - x
然后您可以计算每个元素的增加量
increase = len / n;
现在你有i = (z - x) / increase
。简而言之,您计算每个元素的值增加多少,并计算从x
到z
需要多少次增加。
编辑:如果你真的需要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