Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从数组中获取随机对象_Iphone_Arc4random - Fatal编程技术网

Iphone 从数组中获取随机对象

Iphone 从数组中获取随机对象,iphone,arc4random,Iphone,Arc4random,我想从数组中获取随机对象,有没有办法从可变数组中找到随机对象?id obj; id obj; int r = arc4random() % [yourArray count]; if(r<[yourArray count]) obj=[yourArray objectAtIndex:r]; else { //error message } int r=arc4random()%[yourArray count]; 如果(r最好的方法

我想从数组中获取随机对象,有没有办法从可变数组中找到随机对象?

id obj;
id obj;    
int r = arc4random() % [yourArray count];
    if(r<[yourArray count])
      obj=[yourArray objectAtIndex:r];
   else
   {
     //error message
   }
int r=arc4random()%[yourArray count];
如果(r最好的方法是这样做

int length = [myMutableArray count];
// Get random value between 0 and 99
int randomindex = arc4random() % length;

Object randomObj = [myMutableArray objectAtIndex:randomindex];

如果不想扩展NSArray,这将从一行中的给定数组中获取一个随机值:

id randomElement = [myArray objectAtIndex:(arc4random() % myArray.count)];

只需复制并粘贴即可

-(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;
}
-(NSMutableArray*)getRandomValueFromArray:(NSMutableArray*)arrAllData randomDataCount:(NSInteger)计数{
NSMutableArray*arrFilterData=[[NSMutableArray alloc]init];

对于(int i=0;i这里有一个快速解决方案,使用数组上的扩展:

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

如果您更喜欢同样具有一些更方便功能的框架,请签出。您可以通过迦太基将其添加到您的项目中,然后像上面的示例一样使用它:

import HandySwift    

let digits = Array(0...9)
digits.sample() // => 8

@Thilo,在其他情况下,任何消息或所需的任何内容。为避免模偏差,而不是arc4random(),请使用arc4random_uniform()(有关更多信息,请参阅)。
let digits = Array(0...9)
digits.sample() // => 6
import HandySwift    

let digits = Array(0...9)
digits.sample() // => 8