我想从数组中获得随机对象,有没有什么办法可以从可变数组中找到随机对象?从数组中获取随机对象
13
A
回答
33
@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
为避免模偏差,而不是arc4random()使用arc4random_uniform()。 (欲了解更多信息,请参阅http://stackoverflow.com/questions/10984974/why-do-people-say-there-is-modulo-bias-when-using-a-random-number-generator)。 –
8
7
id randomObject = nil;
if ([array count] > 0){
int randomIndex = arc4random()%[array count];
randomObject = [array objectAtIndex:randomIndex];
}
3
最好的办法是做这样的事情
int length = [myMutableArray count];
// Get random value between 0 and 99
int randomindex = arc4random() % length;
Object randomObj = [myMutableArray objectAtIndex:randomindex];
0
如果你不想延长的NSArray这将在一个给定的阵列得到一个随机值一行:
id randomElement = [myArray objectAtIndex:(arc4random() % myArray.count)];
1
Just Copy和粘贴
-(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;
}
注:数=要获取
1
这里随机值的数量是使用在阵列的扩展迅速解决:
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。您可以通过迦太基将其添加到您的项目然后用它完全像上面的例子:
import HandySwift
let digits = Array(0...9)
digits.sample() // => 8
相关问题
- 1. 从数组获取不同ID对象的随机对象C#
- 2. 获取从数组中随机选择的对象类型?
- 3. 如何随机从数组中获取
- 4. 从对象数组中获取对象
- 5. 获取随机数从数组
- 6. 从对象数组中选择一个随机对象
- 7. 从Vector中读取随机对象java
- 8. 从json对象中获取随机键/值对javascript(p5.js)
- 9. 从ArrayList中抓取随机对象不是随机的
- 10. 从对象数组中获取对象数组的字段值
- 11. 从数组中获取随机对象,然后将其从数组中移除。 iphone
- 12. 如何从h2o随机森林对象中获取随机森林阈值
- 13. 从5个对象之一随机获取数据
- 14. 如何从Firebase数据库获取随机对象?
- 15. ASP.NET查询获取随机对象
- 16. Quickblox获取随机自定义对象
- 17. Meteor MongoDB从对象中获取数组
- 18. 从对象数组中获取键值
- 19. PHP从类中获取数组对象
- 20. 从json数组中获取对象
- 21. Angular2从对象数组中获取值
- 22. 分配随机数到对象数组
- 23. 通过单击按钮从数组内的对象获取随机值
- 24. 从数组中获得随机ID
- 25. 从数组中读取随机值
- 26. 获取随机值而不创建“随机”对象
- 27. 从主中获取随机函数
- 28. 随机发生器从数组中获取数据不显示
- 29. 通过休眠获取SQL数据库中的随机对象
- 30. 如何从字符串中的数组中获得随机对象
的[如何从一个数组访问randon项目在我的手机SDK(HTTP可能重复://计算器.com/questions/3509411/how-to-access-randon-items-from-an-an-array-in-i-phone-sdk) –