Entonces, si está buscando una hermosa paleta de colores, tal vez no sea una gran idea usar valores totalmente aleatorios. Es posible que este enfoque no produzca los mejores resultados. Siempre termina con una selección de colores similares demasiado oscuros o demasiado brillantes.
Enfoque semialeatorio:
Si necesita colores frescos y brillantes, use la siguiente clase simple, que escribí anteriormente cuando tuve los mismos problemas. Es semi-random
y utiliza una paleta de colores predefinida:
class RandomColors {
private Stack<Integer> recycle, colors;
public RandomColors() {
colors = new Stack<>();
recycle =new Stack<>();
recycle.addAll(Arrays.asList(
0xfff44336,0xffe91e63,0xff9c27b0,0xff673ab7,
0xff3f51b5,0xff2196f3,0xff03a9f4,0xff00bcd4,
0xff009688,0xff4caf50,0xff8bc34a,0xffcddc39,
0xffffeb3b,0xffffc107,0xffff9800,0xffff5722,
0xff795548,0xff9e9e9e,0xff607d8b,0xff333333
)
);
}
public int getColor() {
if (colors.size()==0) {
while(!recycle.isEmpty())
colors.push(recycle.pop());
Collections.shuffle(colors);
}
Integer c= colors.pop();
recycle.push(c);
return c;
}
}

Enfoque aleatorio:
Pero si todavía está considerando su uso, random approach
es posible que desee usar esta única línea en lugar de varias líneas de código:
int color= ((int)(Math.random()*16777215)) | (0xFF << 24);

El propósito de usar esto (0xFF << 24)
es establecer el valor alfa al máximo, lo que significa transparencia cero.