随机颜色重复

时间:2017-03-17 18:50:29

标签: java arrays random colors

如何阻止连续选择颜色?

我试图避免在从数组中选择的行中重复相同的颜色。我已经尝试比较颜色是否相等但是再次随机选择时无法跳过颜色。

Color color[]={Color.YELLOW,Color.MAGENTA,Color.BLACK,new Color(0x964B00),new Color(0xB57EDC)};

Random rand=new Random();
Color newColor = color[rand.nextInt(5)];

for(int i=0;i<5;i++){
    if(newColor.equals(color[i]));{
        newColor=color[rand.nextInt(5)];
    }
    myPanel.colorArray[myPanel.mouseDownGridX][myPanel.mouseDownGridY] = newColor;
    myPanel.repaint();
}

1 个答案:

答案 0 :(得分:1)

您的问题不是很清楚,您当前的代码会显示一个经常重复的小选择大小。如果您的问题理解为:

,这是一种可行的解决方案
  

如何创建新号码不是前一个号码的随机数?

(注意:代码是从头开始 - 它应该显示randomExclude

中的主要想法
Color color[]={Color.YELLOW,Color.MAGENTA,Color.BLACK,new Color(0x964B00),new Color(0xB57EDC)};

// remember the previous color somehow
int previousColorIndex = 0;

// -----

newColorIndex = randomExclude(previousColorIndex)

myPanel.colorArray[myPanel.mouseDownGridX][myPanel.mouseDownGridY] = color[newColorIndex];
myPanel.repaint();

previousColorIndex = newColorIndex

// -----

public static int randomExclude(int previous)
{
  Random rand=new Random();
  int random =rand.nextInt(5);

  if(previous == random)
    {
        return randomExclude(previous);
    } 
  }

  return random;
}