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

乱数の整数:

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

次のループを 2 回、3 回、またはそれ以上テストして、出力を比較します。

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 に答える
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 に答える