рандомизировать NSArray - PullRequest
       11

рандомизировать NSArray

0 голосов
/ 16 января 2010

Мне нужно рандомизировать NSArray, который я загрузил с вопросами викторины, но мне нужно держать элементы в определенном порядке.

Ответы [ 2 ]

0 голосов
/ 16 января 2010

Если я правильно понимаю вопрос: у вас есть набор вопросов, вы хотите показать подмножество (предположительно фиксированного размера?), Но подмножество должно сохранить порядок, как в исходном массиве?

Допустим, у вас есть N вопросов, и вы хотите случайным образом выбрать M из них. Вы можете создать массив элементов [0 .. (N - 1)], который хранит индексы в исходном массиве. Затем вы можете перемешать этот массив, используя алгоритм Кнута / Фишера-Йейта , отсортировать первые M элементов и использовать эти первые M индексов для поиска в исходном массиве.

0 голосов
/ 16 января 2010

NSArray - неизменный объект, то есть вы не можете изменить порядок элементов. Я думаю, что я понимаю, что вы получаете, хотя. Просто напишите некоторую функциональность поверх вашей структуры данных, чтобы выбрать элементы этого массива случайным образом. Вам нужно будет отслеживать, к каким элементам уже обращались, чтобы вы не выбирали их заново.

Вы также можете сделать копию вашего массива, используя подтип NSMutableArray. После того, как вопрос выбран, удалите его из этого массива (вы можете сделать это, потому что массив теперь изменяемый)

Вы используете функцию C для случайных чисел. Смотрите rand () и srand ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...