Search code examples
iosrandomnsarray

iOS: get 3 different random elements from an NSMutableArray


I have a NSMutableArray of N Integer elements (N>4), I want to get 3 different random elements from this array. I do not really need a perfectly-uniform distribution, just 3 different random elements should be OK. Do you have any suggestion? Thanks


Solution

  • Make NSIndexSet, and keep adding

    int value = arc4random() % array.count;
    

    items to it until its size gets to 3. The you know that you have your three indexes.

    NSMutableIndexSet *picks = [NSMutableIndexSet indexSet];
    do {
        [picks addIndex:arc4random() % array.count];
    } while (picks.count != 3);
    [picks enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
        NSLog(@"Element at index %ud: %@", idx, [array elementAt:idx]);
    }];