Java 如何生成半随机颜色列表?

Java 如何生成半随机颜色列表?,java,list,random,colors,generator,Java,List,Random,Colors,Generator,我想浏览一个随机生成的颜色列表,检查它们是否彼此不同。与color1==color2不同,但要确保生成的颜色不太相似 我的意思是使用此代码(或类似代码)生成颜色列表: Random randomGenerator = new Random(); ArrayList<Color> colours = new ArrayList<Color>(); while(true) { int red = randomGenerator.nextInt(255); in

我想浏览一个随机生成的颜色列表,检查它们是否彼此不同。与
color1==color2
不同,但要确保生成的颜色不太相似

我的意思是使用此代码(或类似代码)生成颜色列表:

Random randomGenerator = new Random();
ArrayList<Color> colours = new ArrayList<Color>();
while(true) {
    int red = randomGenerator.nextInt(255);
    int green = randomGenerator.nextInt(255);
    int blue = randomGenerator.nextInt(255);
    Color randomColour = new Color(red,green,blue);
    if(!colours.contains(randomColour)) {
        colours.add(randomColour);
    }
    if(colours.size() >= 100) {
        break;
    }
}
Random Random generator=new Random();
ArrayList colors=新的ArrayList();
while(true){
int red=randomGenerator.nextInt(255);
int绿色=randomGenerator.nextInt(255);
int blue=randomGenerator.nextInt(255);
颜色=新颜色(红色、绿色、蓝色);
如果(!colors.contains(随机颜色)){
颜色。添加(随机颜色);
}
如果(colors.size()>=100){
打破
}
}

我的第一个想法是这样的,它是伪随机的

    Random randomGenerator = new Random();
    ArrayList<Color> colours = new ArrayList<Color>();
    int k1 = 0, k2=0,  k3 = 0;
    while(true) {
        k1 = k1 +1 <= 4 ? k1 +1 : (k1+1)%4;
        k2 = k2 +2 <= 4 ? k2 +2 : (k2+2)%4;
        k3 = k3 +3 <= 4 ? k3 +3 : (k3+3)%4;
        int red = randomGenerator.nextInt(255/4*k1);
        int green = randomGenerator.nextInt(255/4*k2);
        int blue = randomGenerator.nextInt(255/4*k3);
        Color randomColour = new Color(red,green,blue);
        System.out.println("R:" +randomColour.getRed()+"G:" +randomColour.getGreen()+"B:" +randomColour.getBlue());
        if(!colours.contains(randomColour)) {
            colours.add(randomColour);
        }
        if(colours.size() >= 100) {
            break;
        }

    }
Random Random generator=new Random();
ArrayList colors=新的ArrayList();
int k1=0,k2=0,k3=0;
while(true){

k1=k1+1那么当前实现的问题是什么?你想过颜色相似性的定义吗?比如说,当一种颜色的绝对rgb差值之和小于15时,它与另一种颜色相似。正如reto指出的,它应该是nextInt(256),这完全取决于你对“相似性”的度量。(不是说试图创建“不太相似”的16777217种颜色……)我会将颜色保留在一个集合中,并在算法完成后将其转换到一个列表中。