Тип возвращаемого значения arc4random()
– это u_int32_t
, который является unsigned int
, поэтому он не может напрямую возвращать отрицательное число.
Вам нужно будет "манипулировать" им, чтобы получить положительный или отрицательный диапазон.
Во-первых, я хотел бы предложить использовать arc4random_uniform()
вместо arc4random() %
, поскольку это позволяет избежать «смещения по модулю», когда верхняя граница не является степенью двойки.
Что касается вашего вопроса, вы можете сделать следующее, вычтя желаемый диапазон.
Например:
arc4random_uniform(100);
Дает значения от 0 до 99,
Но если вычесть 50 следующим образом:
arc4random_uniform(100) - 50;
Теперь мы получим случайное значение от -50 до 49;
РЕДАКТИРОВАТЬ. Если вы присваиваете результаты переменной, я думаю, вам нужно будет ввести результат arc4random_uniform
, чтобы избежать предупреждения компилятора, хотя я не уверен, что это необходимо.
Таким образом, это будет выглядеть так:
int randomNumber = (int)arc4random_uniform(100) - 50;
person
AMI289
schedule
21.11.2014