2013-08-07 51 views
-1

我想這個代碼生成一個隨機數並將數組列表保存在一個數組中,然後我試圖從列表中逐個刪除那些出現一次的數字,例如 1,5,9,4, 3,7,6,10,11,8,2是整數列表現在9出現一次,現在我不需要再次9 ..這是我的隨機非重複數字數組的代碼。如何從非重複數組中刪除數字?

NSMutableArray *storeArray = [[NSMutableArray alloc] init];  
BOOL record = NO; 
int x; 

for (int i=0; [storeArray count] < 10; i++) //Loop for generate different random values 
{ 
    x = arc4random() % 10;//generating random number 
    if(i==0)//for first time 
    { 
     [storeArray addObject:[NSNumber numberWithInt:x]]; 
    } 
    else 
    { 
     for (int j=0; j<= [storeArray count]-1; j++) 
     { 
       if (x ==[[storeArray objectAtIndex:j] intValue]) 
       record = YES; 
     } 

     if (record == YES) 
     { 
      record = NO; 
     } 
     else 
     { 
      [storeArray addObject:[NSNumber numberWithInt:x]]; 
     } 
    } 
} 

回答

2

試試這個,

NSArray *arrRandoms = [[NSArray alloc]initWithObjects:1,5,8,7,36,17,96,32,5,7,8,13,36,nil] ;  // This contains your random numbers 

NSMutableArray *arrFresh = [[NSMutableArray alloc]init]; 

// Now removing the duplicate numbers 

BOOL checkRepeat = NO; 
int _Current; 

for (int i=0; i<[arrRandoms count]; i++) 
{ 
_Current = [arrRandoms objectAtIndex:i]; 

    if (i == 0) 
    [arrFresh addObjects:_Current]; 
    else 
    { 
    checkRepeat = NO; 

    for(int j=0; j< [arrFresh count]; j++) 
    { 
    if (_Current == [arrFresh objectAtIndex:j]) 
     checkRepeat = YES; 
    } 

    if (checkRepeat == NO) 
    [arrFresh addObjects:_Current]; 

    } 
} 

我覺得這個代碼將工作。覈實。

2

嘗試

//**************remove repeat objects from array***************************// 
    NSArray *noDuplicates = [[NSSet setWithArray: yourArray] allObjects]; 
1

添加
.h文件中

BOOL isSame; 
NSMutableArray *countArray; 
NSInteger randomNumber; 

.m文件

countArray = [[NSMutableArray裏的alloc]初始化]。

//get randon no 
-(NSInteger)getRandomNo:(NSInteger)range 
{ 
    isSame=TRUE; 
    while (isSame){ 
    isSame = FALSE; 
    randomNumber = arc4random() % range; 
    for (NSNumber *number in countArray){ 
     if([number intValue] ==randomNumber){ 
      isSame = TRUE; 
      break; 
     } 
    } 
    } 
    [countArray addObject:[NSNumber numberWithInt:randomNumber]]; 
    return randomNumber; 
} 
+0

它只是得到數字,數字重複! – Steve

+0

您添加 .h文件 BOOL isSame; NSMutableArray * countArray; NSInteger randomNumber; .m文件 countArray = [[NSMutableArray alloc] init]; –

+0

其重複的先生! – Steve

0

測試請試試這個,

NSMutableArray *storeArray = [[NSMutableArray alloc] init]; 
NSMutableSet * setUnique = [[NSMutableSet alloc] init]; 
for (int i=0; [setUnique count] < 10; i++) //Loop for generate different random values 
{ 
    [setUnique addObject:[NSNumber numberWithInt:arc4random() % 10]]; 

} 
storeArray = [[setUnique allObjects] mutableCopy]; 
+0

其實ma場景是不同的,我需要一個數字列表,然後我必須刪除一個b一個所有的數字從它,通過這個em始終開始新的列表 – Steve

-1

//檢查該怎麼走陣隨機數(即該陣列(以下arr_numbers)包含非重複號碼)

//通用我張貼這種..所以人不能檢查其他回答

int num_count = 10; 
    int RandomNumber; 
    NSMutableArray *arr_numbers = [[NSMutableArray alloc] init]; 

    for (int j =0; j < num_count; j++) 
    { 
     RandomNumber = 0 + arc4random() % num_count; 

     NSLog(@"%d",RandomNumber); 

     if ([arr_numbers count]>0) 
     { 
      if (![arr_numbers containsObject:[NSNumber numberWithInt:RandomNumber]])// 
      { 
       [arr_numbers addObject:[NSNumber numberWithInt:RandomNumber]]; 
      } 

      if (j == num_count-1) 
      { 
       if ([arr_numbers count] != num_count) 
       { 
        j = 0; 
       } 
      } 
     } 
     else 
     { 
      [arr_numbers addObject:[NSNumber numberWithInt:RandomNumber]]; 
     } 
    } 
    NSLog(@"%@",arr_numbers);