2014-02-07 3 views
1

В объективном сценарии C Я пытаюсь получить случайную строку из NSArray с помощьюИспользование рандов() с NSUInteger, чтобы получить случайный элемент из массива

int idx = rand() % self.adviceList.count; 

Однако, каждый раз, когда он выполняет это бросает EXC_ARITHMETIC ошибка. Мой вопрос имеет два аспекта:

1) Как я могу получить код для запуска

2) есть более переносимый способ для генерации случайных INT/NSUInteger в программировании IOS?

+1

Скорее всего, 'count' равен нулю. Возможно, потому, что 'adviceЛист' равен нулю, возможно потому, что это просто пустой список. –

ответ

4

Код, который вы опубликовали, должен работать. Вероятно, self.adviceList.count возвращает ноль, и это является причиной EXC_ARITHMETIC.

Как Мэттт Томпсон написал в своем article:

Используйте arc4random() и связанные с ним функции.

В частности, чтобы создать случайное число между 0 и N - 1, используйте arc4random_uniform(), что позволяет избежать смещения по модулю.

+1

Но arc4random, вероятно, также задохнется, если self.adviceList.count равен нулю. –

+0

Отлично, спасибо. – Kadinski

-1

Попробуйте использовать arc4random_uniform(num), который принимает в беззнаковом Int

rand() возвращает Int и возвращает random() длинные, так что можно модуль не любит беззнаковые числа?

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