我想创建一个基于随机数的颜色生成器,它可能略有不同,但我需要颜色易于彼此识别。我当时正在考虑以rgb格式生成,这可能是最简单的。我担心简单地增加给定的参数不会很好。你建议使用什么算法?此外,第二个生成的颜色不应该与前一个颜色相同,但我不想存储它们 - 也不会乘以(微)时间,因为脚本的部分通常更快。
答案 0 :(得分:2)
如果你想要真正的随机颜色,那么连续10次生成相同的颜色是可以接受的。要获得被认为是随机的值,您必须消除真正的随机性。
最简单的方法是将循环索引放入颜色列表中。假设您选择网页颜色,216种颜色的列表。每次需要新颜色时,请在索引中添加一个随机数,并根据需要进行包装。为防止获得相同的颜色,请将随机数限制为小于颜色数。
colorIndex =(colorIndex +(random()%100)+ 1)%216;
如果您不想要查找表,则生成HSB颜色,但将色调限制为不包含先前颜色的圆的一部分。如果先前的色调是60度,则选择高于90度或低于30度的下一个色调。您可能希望将饱和度和亮度限制在50%左右。
答案 1 :(得分:1)
如果为每个RBG值生成一个随机数,可以使用255 * 255 * 255种颜色组合。
我不会害怕颜色碰撞,但如果你想确保不会发生任何碰撞,你需要记录以前的颜色。
这个简单的伪代码说明了如何避免一些必要的比较
if red is not equals previous_red then
if blue is not equals previous_blue then
if green is not equals previous_green then
use this color
else
generate again
答案 2 :(得分:1)
不是答案,只是为了分享xkcd的精彩图片:
对什么构成“容易识别的颜色”进行建模并不容易。颜色的R,G,B成分的欧氏距离是一个粗略的衡量标准,但人眼不是RGB颜色受体!例如。如果一对颜色之间有一些欧几里德距离,而另一对颜色之间有确切的距离,那么你真的不知道每对颜色是否可以区分,除非你看到它们!
答案 3 :(得分:0)
对于真正的随机数生成器,请查看here。我相信你也可以把它绑定在一系列数字中。
答案 4 :(得分:0)
让我来理解这个:
创建一个伪随机数algorythm(键入Google查找thowsands)并创建一个带颜色的数组。
您没有指定语言,无论如何您可以使用以下内容:
colors = [0xFF0000,0x00FF00,0x0000FF]
红色,绿色和蓝色
你可以拥有类似的东西:
position = fn_random();
平局(颜色[位置]);
希望这就是你要找的......
让我知道!!