Anton
Anton

Reputation: 129

ObjectiveC random digits

I need some help. I want to generate numbers.But my numbers repeated. how can I make the numbers don't repeat? My code below. Thanks

#import <Foundation/Foundation.h>
#import "Evaluation.h"
#define MAXDIGITCARDS 51
#define MINDIGITCARDS 0
int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int userDigit=30;
        NSMutableArray* currentArray=[NSMutableArray new];  
        for (int a=0;a<userDigit;a++)
        {
            Evaluation *evaluation = [Evaluation new];
            int correctNumber = ((arc4random() % (MAXDIGITCARDS - MINDIGITCARDS)) + MINDIGITCARDS);
            [evaluation setCorrectNumber:correctNumber];
            [currentArray addObject:evaluation];
            [evaluation release];

        }
        [currentArray release];

    [pool drain];
    return 0;
}

Upvotes: 0

Views: 363

Answers (2)

Nick Moore
Nick Moore

Reputation: 15857

If by 'not repeat' you mean you want all 30 numbers to be different from each other, then each time you generate a number see if it already exists in currentArray. If it does, generate another one. Repeat until you get one that you haven't had already.

Alternatively (since it looks like you are shuffling cards) look at something like the Fisher-Yates shuffle.

Upvotes: 1

Abizern
Abizern

Reputation: 150605

Have you seeded the random number generator? Something like:

srandom(time(NULL));

Upvotes: 0

Related Questions