Esto puede no ser exactamente cómo se implementa esto, pero espero que le ayudará a empezar.
En algún lugar en el encabezado o en la parte superior de su archivo de aplicación:
#import <stdlib.h>
#import <time.h>
En otras partes de su aplicació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
Si necesita probar sin reemplazo, para eliminar duplicados, es posible que crear un NSSet
de randomEntityIndex
NSNumber
objetos, en lugar de solo muestrear aleatoriamente int
s.
En este caso, a partir de una muestra de NSSet
ordenada, retire NSNumber
objetos a medida que los saca de la bolsa, y decremento myEntityCount
a los efectos de recoger un objeto NSNumber
azar del conjunto.
Información adicional: las cosas que intento capturar son objetos con dos propiedades, una nsstring en cualquier lugar de 1-50 caracteres de largo, y una clave pseudoprimaria int que pensé que podría ayudar con el bit de selección al azar. Puedo reestructurar el modelo aunque, si es necesario, aún crear prototipos de este tonto. – nickthedude
Este comentario debe agregarse a su pregunta. –