The page forarc4random indicates that the return value can be anywhere in the range valid for u int32(i.e. 0 to (2**32)-1). This means that you will want to split into 0xFFFFFFFFinstead RAND_MAX, which I assume is less (it depends on the library, so you will need to check exactly what it is).
Your function should look like this:
- (float)randomValueBetween:(float)low andValue:(float)high {
return (((float) arc4random() / 0xFFFFFFFFu) * (high - low)) + low;
}