Voglio ottenere un oggetto casuale dall'array, esiste un modo come posso trovare un oggetto casuale dall'array mutabile?Ottieni oggetto casuale dalla matrice
risposta
@interface NSArray (Random)
- (id) randomObject;
@end
@implementation NSArray (Random)
- (id) randomObject
{
if ([self count] == 0) {
return nil;
}
return [self objectAtIndex: arc4random() % [self count]];
}
@end
Per evitare il bias del modulo, piuttosto che arc4random() usare arc4random_uniform(). (Per ulteriori informazioni, consultare http://stackoverflow.com/questions/10984974/why-do-people-say-there-is-modulo-bias-when-using-a-random-number-generator). –
id randomObject = nil;
if ([array count] > 0){
int randomIndex = arc4random()%[array count];
randomObject = [array objectAtIndex:randomIndex];
}
Il modo migliore sarebbe quello di fare qualcosa di simile
int length = [myMutableArray count];
// Get random value between 0 and 99
int randomindex = arc4random() % length;
Object randomObj = [myMutableArray objectAtIndex:randomindex];
Se non si desidera estendere NSArray questo otterrà un valore casuale da un dato array in una riga:
id randomElement = [myArray objectAtIndex:(arc4random() % myArray.count)];
Solo Copia e Incolla
-(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;
}
Nota: Count = numero di valori casuali che si desidera recuperare
Ecco una soluzione Swift utilizzando un'estensione su array:
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]
}
}
si può utilizzare Semplice come questo:
let digits = Array(0...9)
digits.sample() // => 6
Se si preferisce un quadro che ha anche alcune caratteristiche più a portata di mano quindi checkout HandySwift. È possibile aggiungere al progetto via Cartagine poi usarlo esattamente come nell'esempio di cui sopra:
import HandySwift
let digits = Array(0...9)
digits.sample() // => 8
- 1. Get elemento casuale dalla matrice in MongoDB
- 2. elemento casuale dalla matrice di stringhe
- 3. Matrice di permutazione casuale
- 4. Genera matrice binaria casuale
- 5. semplice PHP matrice casuale
- 6. Ottieni il valore casuale senza creare l'oggetto `Casuale`
- 7. elemento rimuovi dalla matrice
- 8. jQuery - Ottieni un elemento dalla matrice come elemento jQuery?
- 9. Rails Active Record - Ottieni la matrice ids dalla relazione
- 10. Ottieni l'elemento Nth di una matrice restituita dalla funzione "string_to_array()"
- 11. OpenCV: ottieni la matrice prospettica dalla traslazione e rotazione
- 12. Ottieni un solo elemento dalla matrice di oggetti in JSON
- 13. Velocizza calcolo a matrice casuale
- 14. Selezione casuale di colonne a matrice
- 15. Creazione di una matrice dalla funzione oggetto utilizzando la mappa
- 16. Ottieni oggetto per campo diverso dalla chiave primaria
- 17. Rimozione valore dalla matrice su percorso specifico
- 18. Selezionare un valore casuale da una matrice
- 19. Colore casuale da matrice in Sass
- 20. Oggetto casuale non disposto in C#
- 21. Appiattisci oggetto su matrice?
- 22. oggetto matrice statica
- 23. PHP estrarre un'immagine casuale dalla cartella
- 24. Accesso valore dalla matrice di oggetti
- 25. Ottieni oggetto con id()?
- 26. Ottieni l'indice di enum dalla stringa?
- 27. Come rimuovere elementi dalla matrice?
- 28. MongoDB rimuovere elemento dalla matrice
- 29. Come calcolare l'angolo dalla matrice di rotazione
- 30. Scegliere un oggetto casuale in un NSArray
possibile duplicato di [come accedere agli elementi randon da una matrice in telefono i sdk] (http: // StackOverflow .com/questions/3509411/how-to-access-randon-items-da-un-array-in-i-phone-sdk) –