Страница справочника для arc4random
указывает, что возвращаемое значение может находиться в любом месте диапазона, действительного для u int32
(т.е. 0 to (2**32)-1
). Это означает, что вы захотите разделить на 0xFFFFFFFF
вместо RAND_MAX
, что, как я полагаю, меньше (однако это зависит от библиотеки, поэтому вам нужно будет точно проверить, что это такое).
Таким образом, ваша функция должна стать:
- (float)randomValueBetween:(float)low andValue:(float)high {
return (((float) arc4random() / 0xFFFFFFFFu) * (high - low)) + low;
}