Đây có thể không chính xác cách bạn triển khai, nhưng hy vọng nó sẽ giúp bạn bắt đầu.
Một nơi nào đó trong tiêu đề của bạn hoặc ở phía trên cùng của tập tin thực thi của bạn:
#import <stdlib.h>
#import <time.h>
Ở những nơi khác trong việc thực hiện của bạn:
//
// get count of entities
//
NSFetchRequest *myRequest = [[NSFetchRequest alloc] init];
[myRequest setEntity: [NSEntityDescription entityForName:myEntityName inManagedObjectContext:myManagedObjectContext]];
NSError *error = nil;
NSUInteger myEntityCount = [myManagedObjectContext countForFetchRequest:myRequest error:&error];
[myRequest release];
//
// add another fetch request that fetches all entities for myEntityName -- you fill in the details
// if you don't trigger faults or access properties this should not be too expensive
//
NSArray *myEntities = [...];
//
// sample with replacement, i.e. you may get duplicates
//
srandom(time(NULL)); // seed random number generator, so that you get a reasonably different series of random integers on each execution
NSUInteger numberOfRandomSamples = ...;
NSMutableSet *sampledEntities = [NSMutableSet setWithCapacity:numberOfRandomSamples];
for (NSInteger sampleIndex = 0; sampleIndex < numberOfRandomSamples; sampleIndex++) {
int randomEntityIndex = random() % myEntityCount; // generates random integer between 0 and myEntityCount-1
[sampledEntities addObject:[myEntities objectAtIndex:randomEntityIndex]];
}
// do stuff with sampledEntities set
Nếu bạn cần để lấy mẫu mà không cần thay thế, để loại bỏ bản sao, có lẽ bạn tạo các đối tượng NSSet
của randomEntityIndex
NSNumber
thay vì chỉ lấy mẫu ngẫu nhiên int
s.
Trong trường hợp này, mẫu từ một lệnh NSSet
, loại bỏ NSNumber
đối tượng như bạn kéo chúng ra khỏi túi, và giảm giá trị myEntityCount
nhằm mục đích chọn một đối tượng ngẫu nhiên NSNumber
từ tập.
Nguồn
2010-05-13 22:17:08
Thông tin thêm: những thứ tôi đang cố gắng lấy là đối tượng có hai thuộc tính, một chuỗi nsstring bất kỳ từ 1-50 ký tự dài và khóa giả chính int tôi nghĩ có thể trợ giúp với bit lựa chọn ngẫu nhiên. Tôi có thể tái cơ cấu mô hình mặc dù nếu cần thiết vẫn còn prototyping sucker này. – nickthedude
Nhận xét này nên được thêm vào câu hỏi của bạn. –