我想从数组中获取随机对象,有什么办法可以从可变数组中找到随机对象吗?
答案 0 :(得分:36)
@interface NSArray (Random)
- (id) randomObject;
@end
@implementation NSArray (Random)
- (id) randomObject
{
if ([self count] == 0) {
return nil;
}
return [self objectAtIndex: arc4random() % [self count]];
}
@end
答案 1 :(得分:8)
id obj;
int r = arc4random() % [yourArray count];
if(r<[yourArray count])
obj=[yourArray objectAtIndex:r];
else
{
//error message
}
答案 2 :(得分:7)
id randomObject = nil;
if ([array count] > 0){
int randomIndex = arc4random()%[array count];
randomObject = [array objectAtIndex:randomIndex];
}
答案 3 :(得分:3)
最好的方法是做这样的事情
int length = [myMutableArray count];
// Get random value between 0 and 99
int randomindex = arc4random() % length;
Object randomObj = [myMutableArray objectAtIndex:randomindex];
答案 4 :(得分:1)
只需复制并粘贴
-(NSMutableArray*)getRandomValueFromArray:(NSMutableArray*)arrAllData randomDataCount:(NSInteger)count {
NSMutableArray *arrFilterData = [[NSMutableArray alloc]init];
for(int i=0; i<count; i++){
NSInteger index = arc4random() % (NSUInteger)(arrAllData.count);
[arrFilterData addObject:[arrAllData objectAtIndex:index]];
[arrAllData removeObjectAtIndex:index];
}
return arrFilterData;
}
注意:Count =您要获取的随机值的数量
答案 5 :(得分:1)
这是 Swift解决方案,使用Arrays上的扩展程序:
extension Array {
func sample() -> Element? {
if self.isEmpty { return nil }
let randomInt = Int(arc4random_uniform(UInt32(self.count)))
let randomIndex = self.startIndex.advancedBy(randomInt)
return self[randomIndex]
}
}
您可以使用这么简单:
let digits = Array(0...9)
digits.sample() // => 6
如果您更喜欢具有更强大功能的框架,请结帐 HandySwift 。您可以将其添加到项目 via Carthage ,然后使用它,就像上面的示例一样:
import HandySwift
let digits = Array(0...9)
digits.sample() // => 8
答案 6 :(得分:0)
如果您不想扩展NSArray,这将从一行中的给定数组中获取随机值:
id randomElement = [myArray objectAtIndex:(arc4random() % myArray.count)];