这是一个简单的方法:
1.Generate a random integer.
2.Shift it 8 times to have 24 meaningful bits, store this integer value.
3.Use first 8 bits for R, second group of 8 bits for G,
and the remaining 8 bits for B value.
对于每个新的随机数,将其移动 8 次,比较您之前存储的所有其他整数值,如果它们都与新的不匹配,则将其用于新颜色(步骤 3)。
人眼的区分是一个有趣的话题,因为感知阈值因人而异。为了实现它移位整数 14 次,为 R 获取前 6 位(填充两个 0 以再次获得 8 位),为 G 获取第二个 6 位,为 B 获取后 6 位。如果您认为 6 位不是对它有好处,减少它 5,4 ......
每个通道有 4 个有效位的简单运行:我的随机整数是:
0101-1111-0000-1111-0000-1100-1101-0000
我将(您也可以使用乘法或模数)向左移动 20 次:
0000-0000-0000-0000-0000-0101-1111-0000
存储此值。
然后为 R 获取前 4 位,为 G 获取后 4 位,为 B 获取后 4 位:
R: 0101
G: 1111
B: 0000
填充它们以使它们中的每一个为 8 位。
R: 0101-0000
G: 1111-0000
B: 0000-0000
将它们用于您的颜色组件。
对于移位后的每个新随机数,将其与迄今为止存储的整数值进行比较。如果不同,则存储并用于颜色。