диапазон arc4random (), включая негативы - PullRequest
4 голосов
/ 04 марта 2012

Хотите узнать, как мне отформатировать вызов на arc4Random(), чтобы использовать диапазон чисел от -10 до 10.

Или arc4Random() генерирует только от 0 до X?Если это так, мне нужно будет манипулировать результатом из arc4Random(), чтобы он мог быть результатом в указанном диапазоне?

1 Ответ

6 голосов
/ 04 марта 2012

arc4random возвращает u_int32_t, который является беззнаковым типом. Вам нужно привести его к типу со знаком и затем вычесть.

Полагаю, вы хотите, чтобы число от -10 до +10 включительно (иногда нужно, чтобы и -10, и +10 выбирались).

Если вы используете iOS 4.3 или более позднюю версию или Mac OS X 10.7 или более позднюю версию, вам следует использовать функцию arc4random_uniform:

int myNumber = (int)arc4random_uniform(21) - 10;

Если вы нацеливаетесь на более старую ОС, вы должны использовать arc4random:

int myNumber = (int)(arc4random() % 21) - 10;
...