Ios 随机生成与另一种颜色相似的颜色

Ios 随机生成与另一种颜色相似的颜色,ios,objective-c,uicolor,arc4random,Ios,Objective C,Uicolor,Arc4random,在我的应用程序中,我通过以下功能随机生成颜色: UIColor *origionalRandomColor = [UIColor colorWithRed:arc4random_uniform(255) / 255.0 green:arc4random_uniform(255) / 255.0

在我的应用程序中,我通过以下功能随机生成颜色:

UIColor *origionalRandomColor = [UIColor
                                   colorWithRed:arc4random_uniform(255) / 255.0
                                   green:arc4random_uniform(255) / 255.0
                                   blue:arc4random_uniform(255) / 255.0
                                   alpha:1.0];
我想生成一个类似于上面的颜色,也是随机的。我想用一个常数来确定新颜色与旧颜色的相似程度

我一直在尝试这样做,首先取红色值,生成一个小的随机数,然后随机选择加或减以形成一种新的颜色。然后对绿色和蓝色重复该过程。然后我可以重新组合新的相似颜色

在下面的代码中,计数器是一个int。例如,当计数器是1时,我希望差异比计数器是20时更明显

我试着这样做:

CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha =0.0;
[origionalRandomColor getRed:&red green:&green blue:&blue alpha:&alpha];


//Randomly generates a 0 or 1
//0 results in subtracting - 1 results in adding the value
int AddSubtract = arc4random() %2;

//    double val = 20 - couter;
//    val = val/10 - 1;
//    if (val < .2) {
//        val = .2;
//    }

//    float x = (arc4random() % 100)/(float)100;
//    NSLog(@"**********%f", x);
//    x = x/((float)counter/100);
//    NSLog(@"----------%f", x);

float x = (20-counter)/10;
NSLog(@"----------%f", x);


if (AddSubtract == 0)   //subtract the val
    red -= x;
else                    //add the val
    red += x;

//Then repeated for green/blue

UIColor *newColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
我在上面遇到的问题是,它正在生成与原始颜色截然不同的新颜色。原来的颜色将是绿色,而新的颜色将是明亮的紫色。当我记录这些值时,我得到了疯狂的数字,所以很明显有些地方出了问题

提前谢谢

你有

float x = (20-counter)/10;
给定计数器是整数,20计数器/10只能是0、1或2。 您必须添加类型转换:

float x = (float)(20-counter) / 10;
或者更容易

float x = (20f - counter) / 10f;

发布的代码有什么问题?你解释你想要什么,你发布代码,但你没有说问题是什么。你需要澄清你所说的相似颜色是什么意思。简单地改变RGB值就意味着颜色不会相似,除非你只改变三种颜色中的一种。您最好使用HSB值。也许色调上的细微变化,然后饱和度和亮度上的变化更适合你对相似的定义。也许看看。特别是类似的颜色。为什么不简单地将arc4random_uniform20f-10f/255f添加到每个颜色组件中?另外,将结果封装到fmax0、fmin1、x中,以确保满足边界。