随机化条件的颜色

时间:2014-05-15 21:46:28

标签: java random

我想随机化一种颜色,但条件有点模糊:颜色不能是灰色(因此,接近黑/白)。

这样做的方法是什么?

我的想法:
选择一个基本的颜色调色板然后随机选择一个,并且"播放"用它的RGB参数。

3 个答案:

答案 0 :(得分:2)

颜色可以用红色,绿色和蓝色混合的方式表示。一个可以更好地工作的模型是一个名为HSV的方法(有一个类似的模型称为HSL),意思是色调,饱和度和值。色调是颜色的频率(色轮上的旋转位置),而饱和度和值控制颜色的显示效果以及颜色的暗/亮程度。确定S和V的范围,然后选择一个随机的Hue,你应该是好的。

答案 1 :(得分:1)

的伪代码:

在0到255范围内生成value1。

生成范围0到(value1 - 100)和(value1 + 100)到255的值2

在范围0到min(value1,value2)中生成value3 - 100和min(value1,value2)+ 100到255.

随机将value1,value2和value3分配给R G和B.

答案 2 :(得分:1)

为红色(r),绿色(g)和蓝色(b)生成随机值。然后计算

(r - g) * (r - g) + (r - b) * (r - b) + (g - b) * (g - b)

此数量将为您提供颜色距离灰色的距离的度量。零意味着它是灰色或黑色或白色。大量意味着它已经饱和。

因此,如果此数字小于某个阈值(可能是5000左右),则重新生成数字。您可能需要玩一点才能找到满足您需求的最佳阈值。

构造它的最简单方法可能是使用do-while循环。