LPPloveROU 2013-01-06 08:22 采纳率: 50%
浏览 2145

随机分配数组重复值

代码实现随机分配NSMuttable Array,但是随机分配之后数组一直重复同一个值,我怎么修改能让他不再重复了?在ios6中。

words = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3",@"4", nil] ;
NSUInteger count = [words count];

for (int i = 0; i < count; i++)
   {
    NSInteger nElements = count - i;
    NSInteger n = (arc4random() % nElements) + i;
    NSLog(@"n val %d i val %d",i,n);
    [words exchangeObjectAtIndex:i withObjectAtIndex:n];
   }

NSlog输出:

2012-12-31 12:49:05.730 quizer[1607:c07] n val 0 i val 0
2012-12-31 12:49:05.731 quizer[1607:c07] n val 1 i val 3
2012-12-31 12:49:05.731 quizer[1607:c07] n val 2 i val 2
2012-12-31 12:49:05.732 quizer[1607:c07] n val 3 i val 3
  • 写回答

1条回答

  • gaoXxxing 2013-01-06 09:15
    关注

    随机分配数组包括0到TOTAL_NUMBER中的所有数值,都只一次。

    @synthesize alreadyGeneratedNumbers;//this is a mutableArray.
    
    
    int TOTAL_NUMBER=5;//size of array
    
    
    -(int)generateRandomNumber{
        int low_bound = 0;
        int high_bound = TOTAL_NUMBER;
        int width = high_bound - low_bound;
        int randomNumber = low_bound + arc4random() % width;
        return randomNumber;
    }
    
    
    -(IBAction)randomNumbers:(UIButton *)sender
    {
    
        NSMutableArray *startArray=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
    
        NSMutableArray *shuffle = [NSMutableArray new];
    
        BOOL contains=YES;
        while ([shuffle count]<5) {
            NSNumber *generatedNumber=[NSNumber numberWithInt:[self generateRandomNumber]];
            //NSLog(@"->%@",generatedNumber);
    
            if (![alreadyGeneratedNumbers containsObject:generatedNumber]) {
                [shuffle addObject:generatedNumber];
                contains=NO;
                [alreadyGeneratedNumbers addObject:generatedNumber];
            }
        }
        if ([alreadyGeneratedNumbers count] >= TOTAL_NUMBER) {
            NSLog(@"\nOne shuffel ended.....what to reshuffle");
            [alreadyGeneratedNumbers removeAllObjects];
        }
    
        NSMutableArray *shuffledArray=[NSMutableArray new];
        for (NSNumber *index in shuffle) {
            [shuffledArray addObject:[startArray objectAtIndex:[index integerValue]]];
        }
        NSLog(@"Shuffled array = %@",shuffledArray);
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统