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 に答える