配列からランダムオブジェクトを取得したいのですが、どのようにして可変配列からランダムオブジェクトを見つけることができますか?配列からランダムオブジェクトを取得
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
あなたがこの中に指定された配列からランダムな値を取得するにNSArrayを拡張したくない場合は、この
int length = [myMutableArray count];
// Get random value between 0 and 99
int randomindex = arc4random() % length;
Object randomObj = [myMutableArray objectAtIndex:randomindex];
0
ような何かをすることです最善の方法1行:
id randomElement = [myArray objectAtIndex:(arc4random() % myArray.count)];
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;
}
注貼り付け:カウント=あなたは
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. Hibernateを介してSQLデータベースからランダムオブジェクトを取得
- 2. JSON配列から「得点」を取得
- 3. jsonから配列を取得する
- 4. シーケンスを配列から取得する
- 5. PHPの配列から値を取得
- 6. 配列からテキストを取得
- 7. UITableViewControllerからNSManagedObject配列を取得
- 8. MongoIdを配列から取得する
- 9. コアデータから親子配列を取得
- 10. 別のクラスから配列を取得
- 11. 二次元配列から1次元配列を取得
- 12. 配列の配列からコードを取得
- 13. 配列の配列から値を取得する方法は?
- 14. 配列内のSmarty配列からのデータの取得
- 15. php ajax投稿から配列から値を取得
- 16. 2D Java配列から列を取得する方法は?
- 17. KMLファイルから文字列配列のジオポイントのリストを取得
- 18. jsonオブジェクト内の配列から文字列を取得する
- 19. JSONArrayから配列を取得し、配列をクラス変数に設定する
- 20. JavaScriptからurlからバイト配列へのファイルの取得
- 21. JSON配列から最後の配列インデックスを取得します - laravel 5.2
- 22. ファイルから特定の配列を格納/取得する配列
- 23. HTMLページから配列を取得しますか?
- 24. Lodash - 配列を取得
- 25. matplotlib:カラーマップ配列を取得
- 26. 2D配列から1D列配列と1D行配列を取得する方法は? (C#.NET)
- 27. オブジェクトを含む多次元配列から値を取得
- 28. 再帰を使用して配列からカウントを取得
- 29. sqlから配列を取得して条件をチェックする
- 30. 関数内の配列からキーを取得するCodeignitor HELP!
の可能重複[私の電話SDKの配列からランドン項目へのアクセス方法](のhttp:// stackoverflowのを.com/questions/3509411/i-phone-sdkでの配列からのアクセス方法 - –