Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 基于随机数的颜色生成_Algorithm_Colors_Generator - Fatal编程技术网

Algorithm 基于随机数的颜色生成

Algorithm 基于随机数的颜色生成,algorithm,colors,generator,Algorithm,Colors,Generator,我想创建一个基于随机数的颜色生成器,它可能只是略有不同,但我需要易于识别的颜色。我当时正在考虑以rgb格式生成,这可能是最简单的。我担心简单地将给定的参数相乘不会很好。你建议使用什么算法?另外,第二个生成的颜色不应该与前一个相同,但我不想存储它们,也不想与(微)时间相乘,因为脚本的部分通常更快。对于真正的随机数生成器,请看一看。我相信您也可以将其绑定在一个数字范围内。对于真正的随机数生成器,请看一看。我相信您也可以将其绑定到一个数字范围内。让我建议: 创建一个伪随机数算法(键入Google以查找

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

对于真正的随机数生成器,请看一看。我相信您也可以将其绑定在一个数字范围内。

对于真正的随机数生成器,请看一看。我相信您也可以将其绑定到一个数字范围内。

让我建议:

创建一个伪随机数算法(键入Google以查找thowsands)并创建一个带有颜色的数组

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

颜色=[0xFF0000,0x00FF00,0x0000FF]

红、绿、蓝

你可以有这样的东西:

位置=fn_随机()

绘制(颜色[位置])

希望这就是你想要的

让我知道

让我建议:

创建一个伪随机数算法(键入Google以查找thowsands)并创建一个带有颜色的数组

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

颜色=[0xFF0000,0x00FF00,0x0000FF]

红、绿、蓝

你可以有这样的东西:

位置=fn_随机()

绘制(颜色[位置])

希望这就是你想要的


让我知道

如果为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

如果为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

不是答案,只是为了分享xkcd的一张好照片:


对构成“易于识别的颜色”的成分进行建模并不容易。颜色的R、G、B分量的欧几里德距离是一个粗略的度量,但人眼不是RGB颜色感受器!例如,如果一对颜色之间有某种欧几里德距离,而另一对颜色之间有精确的距离,除非你看到它们,否则你真的不知道每一对颜色是否同样可区分

不是答案,只是想分享一张xkcd的好照片:


对构成“易于识别的颜色”的成分进行建模并不容易。颜色的R、G、B分量的欧几里德距离是一个粗略的度量,但人眼不是RGB颜色感受器!例如,如果一对颜色之间有某种欧几里德距离,而另一对颜色之间有精确的距离,除非你看到它们,否则你真的不知道每一对颜色是否同样可区分

如果您想要真正的随机颜色,那么可以连续生成10次相同的颜色。要获得被认为是随机的值,必须去掉真正的随机性

最简单的方法可能是将索引循环到颜色列表中。假设您选择web颜色,一个包含216种颜色的列表。每次需要新颜色时,请向索引中添加一个随机数,并根据需要进行包装。为防止获得相同的颜色,请将随机数限制为小于颜色数

colorIndex=(colorIndex+(random()%100)+1)%216


如果不需要查找表,则生成HSB颜色,但将色调限制为不包含上一颜色的圆部分。例如,如果上一个色调为60度,则选择90度以上或30度以下的下一个色调。您可能希望将饱和度和亮度限制在50%左右。

如果您想要真正的随机颜色,则可以连续生成10次相同的颜色。要获得被认为是随机的值,必须去掉真正的随机性

最简单的方法可能是将索引循环到颜色列表中。假设您选择web颜色,一个包含216种颜色的列表。每次需要新颜色时,请向索引中添加一个随机数,并根据需要进行包装。为防止获得相同的颜色,请将随机数限制为小于颜色数

colorIndex=(colorIndex+(random()%100)+1)%216


如果不需要查找表,则生成HSB颜色,但将色调限制为不包含上一颜色的圆部分。例如,如果上一个色调为60度,则选择90度以上或30度以下的下一个色调。您可能希望将饱和度和亮度限制在50%左右。

您对不同颜色的要求似乎与您不保存已生成颜色的要求相冲突。如果不能同时满足这两项要求,您愿意放弃哪项要求?您的第一句话不清楚。当你说“哪种颜色可能稍有不同”时,你指的是颜色还是随机数?你要求有(明显)不同的颜色似乎与你不保存已生成颜色的要求相冲突。如果不能同时满足这两项要求,您愿意放弃哪项要求?