2012-03-04 3 views
4

Глядя, чтобы найти, как я форматировать вызов arc4Random() использовать диапазон чисел от -10 до 10.arc4random() диапазоне, включая негативы

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

+0

а [полезная ссылка] (http://mikeash.com/pyblog/friday-qa-2011-03-18-random-numbers.html) для случайных чисел в какао – FluffulousChimp

ответ

6

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; 
+0

в чем разница между arc4random и arc4random_uniform ? Что представляет собой число 21? Что представляет собой число 10? – Demasterpl

+0

Вы можете прочитать о различии между функциями, набрав 'man arc4random'. 21 и 10 получены из диапазона номеров, указанных в вашем вопросе. –

+0

В частности, 21 - это 'upperBound - lowerBound + 1', а 10 -' -lowerBound'. Кроме того, вы добавляете 'lowerBound' вместо вычитания' -lowerBound'. В вопросе 'upperBound' равен +10 и' lowerBound' равно -10. –

Смежные вопросы