配列からランダムオブジェクトを取得したいのですが、可変配列からランダムオブジェクトを見つける方法はありますか?
15842 次
7 に答える
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
于 2011-09-28T08:34:15.117 に答える
8
id obj;
int r = arc4random() % [yourArray count];
if(r<[yourArray count])
obj=[yourArray objectAtIndex:r];
else
{
//error message
}
于 2011-09-28T08:31:50.037 に答える
7
id randomObject = nil;
if ([array count] > 0){
int randomIndex = arc4random()%[array count];
randomObject = [array objectAtIndex:randomIndex];
}
于 2011-09-28T08:31:54.183 に答える
3
最善の方法は、このようなことをすることです
int length = [myMutableArray count];
// Get random value between 0 and 99
int randomindex = arc4random() % length;
Object randomObj = [myMutableArray objectAtIndex:randomindex];
于 2011-09-28T08:32:26.303 に答える
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;
}
注:カウント=フェッチするランダムな値の数
于 2015-04-02T17:34:42.747 に答える
1
配列の拡張機能を使用したSwiftソリューションは次のとおりです。
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をチェックアウトしてください。Carthageを介してプロジェクトに追加し、上記の例とまったく同じように使用できます。
import HandySwift
let digits = Array(0...9)
digits.sample() // => 8
于 2016-06-09T17:50:28.457 に答える
0
NSArrayを拡張したくない場合は、指定された配列から1行でランダムな値を取得します。
id randomElement = [myArray objectAtIndex:(arc4random() % myArray.count)];
于 2015-01-07T11:18:43.570 に答える