0

我需要从 75 个对象的 NSMutableArray 中挑选 32 个不同的对象。它可以是 1 到 32、2 到 33 或 10 到 42。我应该使用哪些函数来获取新数组?对不起,我是菜鸟。

4

2 回答 2

3

如果您想要随机索引中的 N 个连续对象,请尝试以下操作:

NSArray *arrayWithNConsecutiveObjects(NSArray *arr, int n)
{
    int subIdx = arc4random_uniform((unsigned) (arr.count - n));

    return [arr subarrayWithRange:NSMakeRange(subIdx, n)];
}

如果需要 32 个随机对象,可以扩展此方法对数组进行随机排序:

NSArray *arrayWithNObjects(NSArray *arr, int n)
{
    arr = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        // random sort
        return arc4random_uniform(3) - 1; // one of -1, 0, and 1
    }];

    int subIdx = arc4random_uniform((unsigned) (arr.count - n));

    return [arr subarrayWithRange:NSMakeRange(subIdx, n)];
}
于 2012-08-12T16:18:29.000 回答
2

您可以使用继承自的适当方法NSArray来检索 32 个连续元素的切片:

int offset = 4;
NSArray *slice = [array subarrayWithRange:NSMakeRange(offset, offset+32)];
于 2012-08-12T16:15:59.400 回答