создать случайные целые числа для викторины, используя plist - PullRequest
1 голос
/ 31 августа 2011

Я бы хотел, чтобы пользователь нажал кнопку, чтобы сгенерировать викторину из десяти вопросов в форме "a +/- b = c", где значения для a и b находятся в диапазоне от +10 до -10 и случайным образом назначен на десять вопросов. Кроме того, вопросы должны случайным образом переключаться между сложением и вычитанием. Как правильно заполнить файл plist? Как использовать arc4random для создания десяти вопросов со случайными целыми числами?

Я подумал, что было бы неплохо отображать вопросы в средстве выбора из одного столбца, где пользователь может прокручивать вопросы или просто отображать текст в определенном CGPoint на экране.

Вместо этого я создал список из 84 возможных вопросов, и я хочу случайным образом выбрать 10 из списка, чтобы создать тест каждый раз, когда пользователь нажимает кнопку. У меня есть это до сих пор:

NSString *plistFile = [[NSBundle mainBundle] pathForResource:@"global" ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsofFile:plistFile];
NSLog(@"%@",[dict objectForKey:@"1"]);
NSLog(@"%@",[dict objectForKey:@"2"]);
NSLog(@"%@",[dict objectForKey:@"3"]);

global - это имя plist, @"1", @"2", @"3" и т. Д. - это имена 84 разностей Q, которые я положил в plist. Как случайно выбрать 10 из 84 NSLogs?

1 Ответ

2 голосов
/ 31 августа 2011

Вместо использования NSDictionary, используйте NSArray, если ваши ключи просто цифры. Вы могли бы тогда сделать

NSString *randomString = [array objectAtIndex:(arc4random() % [array count])]; 

чтобы выбрать случайный элемент.

Однако , я бы действительно посоветовал бы не искать его в списке, если это просто разные комбинации случайных чисел. Написание всех этих комбинаций вручную - просто трата времени. Вот для чего компьютеры!

Старый, но все еще актуальный ответ:

Для генерации случайного числа между -10 и 10:

int a = (arc4random() % 21) - 10;

Вы также можете сделать такую ​​функцию:

int randomIntegerInRange(int min, int max)
{
    int range = max - min + 1;
    return min + arc4random() % range;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...