Estoy tratando de obtener un color aleatorio. Lo he hecho uso de la fuerza bruta, pero este método parece excesivamente laboriosa (aunque la distribución es muy parejo):getRandomColor pero evita los colores oscuros: ayuda a mi algoritmo
- (UIColor *) getRandomColor {
// GOAL: reject colors that are too dark
float total = 3;
float one = arc4random() % 256/256.0;
total -= one;
float two = arc4random() % 256/256.0;
total -= two;
float three = total; // UIColor will chop out-of-range nums
NSMutableArray *threeFloats = [[[NSMutableArray alloc] initWithObjects:[NSNumber numberWithFloat:one], [NSNumber numberWithFloat:two], [NSNumber numberWithFloat:three], nil] autorelease];
NSNumber *red, *green, *blue;
red = [threeFloats objectAtIndex:arc4random() % [threeFloats count]];
[threeFloats removeObject:red];
green = [threeFloats objectAtIndex:arc4random() % [threeFloats count]];
[threeFloats removeObject:green];
blue = [threeFloats lastObject];
return [UIColor colorWithRed:[red floatValue] green:[green floatValue] blue:[blue floatValue] alpha:1];
}
¿Cómo puede ser mejor? Quiero una distribución uniforme de rojo, verde y azul y nada demasiado oscuro (de lo contrario, tomaría tres números aleatorios y terminaré con eso).