我有一個大的NSArray名稱,我需要從該數組中隨機獲得4條記錄(名稱),我該怎麼做?從nsarray獲得n個隨機對象(例如4)
11
A
回答
21
#include <stdlib.h>
NSArray* names = ...;
NSMutableArray* pickedNames = [NSMutableArray new];
int remaining = 4;
if (names.count >= remaining) {
while (remaining > 0) {
id name = names[arc4random_uniform(names.count)];
if (![pickedNames containsObject:name]) {
[pickedNames addObject:name];
remaining--;
}
}
}
2
我做了一個叫NSArray+RandomSelection
類別..。就在這個類別導入到一個項目,然後只需用
NSArray *things = ...
...
NSArray *randomThings = [things randomSelectionWithCount:4];
這裏的實現:
NSArray+RandomSelection.h
@interface NSArray (RandomSelection)
- (NSArray *)randomSelectionWithCount:(NSUInteger)count;
@end
NSArray+RandomSelection.m
@implementation NSArray (RandomSelection)
- (NSArray *)randomSelectionWithCount:(NSUInteger)count {
if ([self count] < count) {
return nil;
} else if ([self count] == count) {
return self;
}
NSMutableSet* selection = [[NSMutableSet alloc] init];
while ([selection count] < count) {
id randomObject = [self objectAtIndex: arc4random() % [self count]];
[selection addObject:randomObject];
}
return [selection allObjects];
}
@end
2
如果你喜歡一個斯威夫特框架 t帽子也有一些更方便的功能,可隨時結賬HandySwift。您可以通過迦太基將其添加到您的項目然後使用它是這樣的:
import HandySwift
let names = ["Harry", "Hermione", "Ron", "Albus", "Severus"]
names.sample() // => "Hermione"
還有一種選擇,在一次得到多個隨機元素:
names.sample(size: 3) // => ["Ron", "Albus", "Harry"]
我希望這有助於!
相關問題
- 1. 把NSArray的隨機對象放到隨機UIButtons標題的NSArray
- 2. 刪除N個隨機對象Django orm
- 3. 從NSArray的NSDictionary對象,如何獲得獨特的NSArray
- 4. Android獲得4個隨機數
- 5. Swift + CoreData。從數據庫中獲取N個隨機對象。 N << size(DB)
- 6. 從NSArray中選擇一個隨機對象索引
- 7. 從給定點獲得N個隨機等距點
- 8. 從nsarray獲取對象
- 9. SQL Server CE 4 - 如何從表中選擇n個隨機行?
- 10. 如何從NSSet實例中檢索一個隨機對象?
- 11. 如何分組查詢並隨機獲得第n個項目
- 12. 從數組中獲取隨機對象
- 13. 在NSArray中選取一個隨機對象
- 14. 如何從android中的firebase數據庫中獲得一個隨機對象?
- 15. 從mysql獲得隨機值
- 16. 獲得一個隨機的項目從
- 17. android如何從10個圖像數組中隨機獲得4個圖像
- 18. 無法從隨機類中獲得一個隨機的int值
- 19. SQL從n個組獲得均勻分佈 - 獲取隨機物品
- 20. 如何乘以NSArray的各個對象並獲得總和?
- 21. 如何隨機化NSArray?
- 22. 如何獲得隨機序列從案例
- 23. 如何獲得一個NSArray
- 24. HandlebarsJS如何從JSON獲得隨機值
- 25. 查詢獲得每個商店隨機4個產品
- 26. 如何獲得「聚類」對象的隨機分佈?
- 27. 如何獲得Android對象動畫師的隨機數
- 28. 獲得N個隨機數,總和爲M
- 29. 從數組獲取不同ID對象的隨機對象C#
- 30. 如何獲得隨機數
不要忘記種子... – 2011-04-30 06:00:50
是的,我剛剛用arc4random()替換了rand(),這是優越的,不需要播種。 – 2011-04-30 06:03:59
謝謝,它工作正常。但是,我認爲,採摘名應該是NSMutableArray – 2011-04-30 06:05:54