¿Crear color aleatorio en Java?

Quiero dibujar puntos de color aleatorios en un JPanel en una aplicación Java. ¿Hay algún método para crear colores aleatorios?

Use la biblioteca aleatoria:

import java.util.Random; 

Luego crea un generador aleatorio:

 Random rand = new Random(); 

A medida que los colores se separan en rojo, verde y azul, puede crear un nuevo color aleatorio creando colores primarios aleatorios:

 // Java 'Color' class takes 3 floats, from 0 to 1. float r = rand.nextFloat(); float g = rand.nextFloat(); float b = rand.nextFloat(); 

Luego, para finalmente crear el color, pasa los colores primarios al constructor:

 Color randomColor = new Color(r, g, b); 

También puede crear diferentes efectos aleatorios usando este método, como crear colores aleatorios con más énfasis en ciertos colores … pasar menos verde y azul para producir un color aleatorio “más rosado”.

 // Will produce a random colour with more red in it (usually "pink-ish") float r = rand.nextFloat(); float g = rand.nextFloat() / 2f; float b = rand.nextFloat() / 2f; 

O para garantizar que solo se generen colores “claros”, puede generar colores que son siempre> 0.5 de cada elemento de color:

 // Will produce only bright / light colours: float r = rand.nextFloat() / 2f + 0.5; float g = rand.nextFloat() / 2f + 0.5; float b = rand.nextFloat() / 2f + 0.5; 

Hay varias otras funciones de color que se pueden usar con la clase Color , como hacer que el color sea más shiny:

 randomColor.brighter(); 

Se puede leer una descripción general de la clase Color aquí: http://download.oracle.com/javase/6/docs/api/java/awt/Color.html

Una línea para valores aleatorios RGB:

 new Color((int)(Math.random() * 0x1000000)) 

Si desea colores pastel agradables, lo mejor es usar el sistema HLS.

 final float hue = random.nextFloat(); // Saturation between 0.1 and 0.3 final float saturation = (random.nextInt(2000) + 1000) / 10000f; final float luminance = 0.9f; final Color color = Color.getHSBColor(hue, saturation, luminance); 

Copia y pega esto para colores pastel shinys del arcoiris

 int R = (int)(Math.random()*256); int G = (int)(Math.random()*256); int B= (int)(Math.random()*256); Color color = new Color(R, G, B); //random color, but can be bright or dull //to get rainbow, pastel colors Random random = new Random(); final float hue = random.nextFloat(); final float saturation = 0.9f;//1.0 for brilliant, 0.0 for dull final float luminance = 1.0f; //1.0 for brighter, 0.0 for black color = Color.getHSBColor(hue, saturation, luminance); 

Si no quieres que luzca horrible, te sugiero que definas una lista de colores en una matriz y luego uses un generador de números aleatorios para elegir uno.

Si desea un color verdaderamente aleatorio, puede generar 3 números aleatorios de 0 a 255 y luego usar el constructor Color (int, int, int) para crear una nueva instancia de Color.

 Random randomGenerator = new Random(); int red = randomGenerator.nextInt(256); int green = randomGenerator.nextInt(256); int blue = randomGenerator.nextInt(256); Color randomColour = new Color(red,green,blue); 

Sé que es un poco tarde para esta respuesta, pero no he visto a nadie más decir esto.

Como dijo Greg, quieres usar la clase Random

 Random rand = new Random(); 

pero la diferencia que voy a decir es simple, haz esto:

 Color color = new Color(rand.nextInt(0xFFFFFF)); 

¡Y es tan simple como eso! no es necesario generar muchos flotadores diferentes.

 import android.graphics.Color; import java.util.Random; public class ColorDiagram { // Member variables (properties about the object) public String[] mColors = { "#39add1", // light blue "#3079ab", // dark blue "#c25975", // mauve "#e15258", // red "#f9845b", // orange "#838cc7", // lavender "#7d669e", // purple "#53bbb4", // aqua "#51b46d", // green "#e0ab18", // mustard "#637a91", // dark gray "#f092b0", // pink "#b7c0c7" // light gray }; // Method (abilities: things the object can do) public int getColor() { String color = ""; // Randomly select a fact Random randomGenerator = new Random(); // Construct a new Random number generator int randomNumber = randomGenerator.nextInt(mColors.length); color = mColors[randomNumber]; int colorAsInt = Color.parseColor(color); return colorAsInt; } } 

He usado esta manera simple e inteligente para crear colores aleatorios en Java,

 Random random = new Random(); System.out.println(String.format("#%06x", random.nextInt(256*256*256))); 

Donde #% 06x te da hexágono sin relleno (siempre de 6 caracteres de largo).

Puede instanciar un color con tres flotantes (r, g, b), cada uno entre 0.0 y 1.0: http://download.oracle.com/javase/6/docs/api/java/awt/Color.html#Color ( flotar,% 20float,% 20float ).

Usando la clase Random de Java puedes crear fácilmente un nuevo color aleatorio como tal:

 Random r = new Random(); Color randomColor = new Color(r.nextFloat(), r.nextFloat(), r.nextFloat()); 

No puedo garantizar que todos sean bonitos, pero serán aleatorios =)

Por supuesto. Simplemente genere un color usando valores aleatorios RGB. Me gusta:

 public Color randomColor() { Random random=new Random(); // Probably really put this somewhere where it gets executed only once int red=random.nextInt(256); int green=random.nextInt(256); int blue=random.nextInt(256); return new Color(red, green, blue); } 

Es posible que desee variar la generación de los números aleatorios si no le gustan los colores que aparece. Supongo que estos tenderán a ser bastante oscuros.

Parece que quieres colores alegres claros. No estoy seguro de lo que quiere decir exactamente con la luz. Pero si quieres ‘colores de arcoiris’ al azar, intenta esto

 Random r = new Random(); Color c = Color.getHSBColor(r.nextFloat(),//random hue, color 1.0,//full saturation, 1.0 for 'colorful' colors, 0.0 for grey 1.0 //1.0 for bright, 0.0 for black ); 

Busque el modelo de color HSB para obtener más información.

 package com.adil.util; /** * The Class RandomColor. * * @author Adil OUIDAD * @URL : http://kizana.fr */ public class RandomColor { /** * Gets the random color. * * @return the random color */ public static String getRandomColor() { String[] letters = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; String color = "#"; for (int i = 0; i < 6; i++ ) { color += letters[(int) Math.round(Math.random() * 15)]; } return color; } } 

Aquí hay un método para obtener un color aleatorio:

 private static Random sRandom; public static synchronized int randomColor() { if (sRandom == null) { sRandom = new Random(); } return 0xff000000 + 256 * 256 * sRandom.nextInt(256) + 256 * sRandom.nextInt(256) + sRandom.nextInt(256); } 

Beneficios:

  • Obtenga la representación entera que se puede usar con java.awt.Color o android.graphics.Color
  • Mantenga una referencia estática a Random .

Seria útil.

 Random randomGenerator = new Random(); int red = randomGenerator.nextInt(255); int green = randomGenerator.nextInt(255); int blue = randomGenerator.nextInt(255); Color randomColour = new Color(red,green,blue);