2

嘿,伙计们,有什么想法可以随机化我从 -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;


}
4

5 回答 5

1

要获得一个随机整数,我建议使用arc4random函数,这里有一些代码可以做到这一点:

int randomInt = arc4random() % questionNumber;
return [self.questions objectAtIndex: randomInt];
于 2012-09-04T12:01:32.407 回答
1

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

一个例子:

int index = arc4random_uniform([self.question count]);
于 2012-09-04T12:02:28.660 回答
0

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

于 2012-09-04T12:02:09.440 回答
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;


}
于 2012-09-04T12:02:19.500 回答
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 个随机数,我已经在真实设备上测试过它,而不是在模拟器上,但它也应该在模拟器上工作。

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

于 2012-09-04T12:06:11.527 回答