如何随机化从我的词典 - plist中提取的问题

时间:2012-09-04 11:55:58

标签: ios dictionary plist

嘿,对于我从-plist文件中提取的问题进行随机化的任何想法?

-(NSUInteger)nextQuestionID:(NSUInteger)question_number{
return (question_number>=[self.questions count]-1) ? 0 : (question_number+1);
return 0;

}

-(NSDictionary*) getQuestion:(NSUInteger)question_number{
if (question_number>=[self.questions count]) question_number = 0;
return [self.questions objectAtIndex:question_number];
return NULL;


}

5 个答案:

答案 0 :(得分:1)

要获得随机整数,我建议使用arc4random函数,这里有一些代码可以执行此操作:

int randomInt = arc4random() % questionNumber;
return [self.questions objectAtIndex: randomInt];

答案 1 :(得分:1)

您可以使用arc4random_uniform(upper_bound)功能。该参数是随机数的上限。

一个例子:

int index = arc4random_uniform([self.question count]);

答案 2 :(得分:0)

question_number = arc4random() % self.questions.count;

答案 3 :(得分:0)

将问题编号设为随机数

替换功能

-(NSDictionary*) getQuestion:(NSUInteger)question_number{
   if (question_number>=[self.questions count]) question_number = 0;
   question_number = arc4random()%[self.questions count];// changes made here
   return [self.questions objectAtIndex:question_number];
   return NULL;


}

答案 4 :(得分:0)

随机整数:

srand(time(nil));
for (int i = 0; i < 100; i++) {
    NSLog(@"random number between 72 and 96 : %d", rand() % (96 - 72) + 72);
}

<强>更新

并针对您的具体情况:

- (NSUInteger)nextQuestionID {
    srand(time(nil));
    return rand() % [self.questions count];
}

- (NSDictionary*)getQuestion {
    return [self.questions objectAtIndex:[self nextQuestionID]];
}

<强>更新#2

测试以下循环两次,三次或更多次并比较输出:

srand(time(nil));
for (int i = 0; i < 10; i++) {
    NSLog(@"random number : %d", rand() % 89 + 10);
}

你应该得到10到99之间的10个随机数,我在真实设备上测试过它,而不是在模拟器上测试它,但它也可以在模拟器上运行。

如果您总是得到相同的结果,请告诉我。