我想知道是否有人可以帮忙解决这个问题:
我有一系列方程式,产生5个数字(a,b,c,d,e)。 我想将这些数字标准化为0到1的范围
问题是我事先不知道数字所以我不知道最大值和最小值。 换句话说,每当用户向方程式输入不同的值时,最大值和最小值都不同。
我知道我可以使用
Y = 1 +(x-A)*(10-1)/(B-A)
其中y是x的标准化值。 A是最小值,B是最大值。
其中一个数字(a,b,c,d,e)可以是最大值,另一个可以是最小值。
所以基本上我需要比较这些数字,找出哪一个是最大值,哪一个是最小值,并将它们加到上述规范化公式中。
有什么想法吗?
PS这是iPhone sdk
答案 0 :(得分:0)
制作一个数组并进行比较。
NSArray *array = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:a], [NSNumber numberWithInt:b],[NSNumber numberWithInt:c],[NSNumber numberWithInt:d], nil];
int max = [[array valueForKeyPath:@"@max.intValue"] intValue];
int min = [[array valueForKeyPath:@"@min.intValue"] intValue];
希望这对你有所帮助。
答案 1 :(得分:0)
float min = a;
float max = a;
if (b < min)
min = b;
if (b > max)
max = b;
并重复c,d和e的最后4行
注意:当然,正确的方法是重复使用C数组而不是重复行,但这会让你开始。