基于随机数的颜色生成

时间:2010-06-01 19:40:45

标签: algorithm colors generator

我想创建一个基于随机数的颜色生成器,它可能略有不同,但我需要颜色易于彼此识别。我当时正在考虑以rgb格式生成,这可能是最简单的。我担心简单地增加给定的参数不会很好。你建议使用什么算法?此外,第二个生成的颜色不应该与前一个颜色相同,但我不想存储它们 - 也不会乘以(微)时间,因为脚本的部分通常更快。

5 个答案:

答案 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的精彩图片:alt text

对什么构成“容易识别的颜色”进行建模并不容易。颜色的R,G,B成分的欧氏距离是一个粗略的衡量标准,但人眼是RGB颜色受体!例如。如果一对颜色之间有一些欧几里德距离,而另一对颜色之间有确切的距离,那么你真的不知道每对颜色是否可以区分,除非你看到它们

答案 3 :(得分:0)

对于真正的随机数生成器,请查看here。我相信你也可以把它绑定在一系列数字中。

答案 4 :(得分:0)

让我来理解这个:

创建一个伪随机数algorythm(键入Google查找thowsands)并创建一个带颜色的数组。

您没有指定语言,无论如何您可以使用以下内容:

colors = [0xFF0000,0x00FF00,0x0000FF]

红色,绿色和蓝色

你可以拥有类似的东西:

position = fn_random();

平局(颜色[位置]);

希望这就是你要找的......

让我知道!!

相关问题