我需要从75个对象的NSMutableArray中选择32个不同的对象。它可以是1到32,2到33或10到42.我应该使用哪些函数来获取新数组?抱歉是noob。
答案 0 :(得分: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)];
}
答案 1 :(得分:2)
您可以使用从NSArray
继承的适当方法来检索32个连续元素的切片:
int offset = 4;
NSArray *slice = [array subarrayWithRange:NSMakeRange(offset, offset+32)];