2011-03-31 191 views
0

我需要一些幫助。 我想生成numbers.But我的號碼重複。 我該如何讓數字不重複? 我的代碼如下。 謝謝ObjectiveC隨機數字

#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; 
} 
+0

你可以發佈setCorrectNumber函數嗎?還是合成? – Joze 2011-03-31 08:08:52

+0

什麼是'arc4random'?你爲什麼不使用標準C庫中的random()? – jv42 2011-03-31 08:09:56

+0

CorrectNumber合成。在這個類中,一個變量int CorrectNumber – Anton 2011-03-31 08:15:00

回答

1

如果「不重複」你的意思是你想要的所有30個號碼,從彼此不同,那麼每次生成一些時間看它是否已經在currentArray存在。如果是,則生成另一個。重複,直到你得到一個你還沒有的。

另外(因爲它看起來像你洗牌)看看像Fisher-Yates shuffle

0

你有沒有種子的隨機數發生器?喜歡的東西:

srandom(time(NULL));