如何从非重复数字数组中删除数字?

时间:2013-08-07 06:26:38

标签: ios objective-c random integer

我正在尝试使用此代码生成随机数并保存数组中的数字列表,然后我尝试从列表中逐个删除那些出现一次的数字,例如 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]];
        }
    }
}

5 个答案:

答案 0 :(得分:2)

试试吧

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

答案 1 :(得分: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 :(得分:1)

你添加了 .h文件

BOOL isSame;
NSMutableArray *countArray;
NSInteger randomNumber;

.m文件

countArray = [[NSMutableArray alloc] init];

//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;
}

答案 3 :(得分: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];

答案 4 :(得分:-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);