Colors 如何在没有两种颜色几乎相似的情况下生成一组随机颜色?
我目前使用以下函数生成颜色的随机十六进制表示Colors 如何在没有两种颜色几乎相似的情况下生成一组随机颜色?,colors,Colors,我目前使用以下函数生成颜色的随机十六进制表示 function getRandomColor($max_r = 192, $max_g = 192, $max_b = 192) { if ($max_r > 192) { $max_r = 192; } if ($max_g > 192) { $max_g = 192; } if ($max_b > 192) { $max_b = 192; } if ($max_r < 0) { $max_
function getRandomColor($max_r = 192, $max_g = 192, $max_b = 192) {
if ($max_r > 192) { $max_r = 192; }
if ($max_g > 192) { $max_g = 192; }
if ($max_b > 192) { $max_b = 192; }
if ($max_r < 0) { $max_r = 0; }
if ($max_g < 0) { $max_g = 0; }
if ($max_b < 0) { $max_b = 0; }
return '#' . dechex(rand(0, 192)) . dechex(rand(0, 192)) . dechex(rand(0, 192));
}
函数getRandomColor($max\u r=192,$max\u g=192,$max\u b=192){
如果($max\u r>192){$max\u r=192;}
如果($max\u g>192){$max\u g=192;}
如果($max_b>192){$max_b=192;}
如果($max\u r<0){$max\u r=0;}
如果($max_g<0){$max_g=0;}
如果($max_b<0){$max_b=0;}
返回'#'.dechex(rand(0192)).dechex(rand(0192)).dechex(rand(0192));
}
请注意,我将最大值设置为192而不是255,唯一的原因是我避免使用非常浅的颜色,目的是在白色背景中使用随机颜色作为前景
我的问题是,在没有几乎相同的颜色的情况下,如何生成一组无限编号的颜色。e、 g.:
#D964D9
&#FF3EFF
?有几种方法浮现在脑海中:
使用坐标可能更好。如果不需要白色或黑色,可以将S和V设置为其最大值,并生成彼此不太接近的H值(mod 360度)。然后转换为RGB。您的算法可以随机生成RGB颜色(正如现在所做的),但是您可以在接受颜色选择之前验证两个R是否足够不同。对于给定的R、G和/或B,该算法可以重复该步骤(比如最多4…10…N次)
while ( (R1 > $max_r/2) && (R2 > $max_r/2) ) {
// Both are in the upper half of range, get a new random value for R1.
}
其他可能性:
- 对量程的下半部分重复此操作
- 进一步细分范围(分为1/3或1/4)
- 重复G和B音