También disponible en: English · Português · Français · العربية
Generador de colores aleatorios
Saca colores al azar en hexadecimal, repartidos de forma uniforme por la luminosidad y no según caiga el cubo RGB, con la opción de garantizar que no haya dos demasiado cercanos.
Qué es un generador de colores aleatorios
Elige colores por ti. La forma obvia es escoger tres números entre 0 y 255 y llamar color al resultado, que es lo que hace casi cualquier generador. Eso da una extracción uniforme entre los 16.777.216 colores del cubo sRGB y, si solo quieres un color cualquiera, está perfectamente bien.
Deja de estar bien en cuanto quieres un *conjunto* de ellos —la leyenda de un gráfico, colores de etiquetas, un juego de avatares—, porque salen a relucir dos problemas que un solo color nunca te enseña: el reparto no es uniforme para el ojo, y los colores chocan entre sí.
Este generador también hace la versión ingenua, y la etiqueta con honestidad, pero por defecto muestrea de forma uniforme en luminosidad percibida y descarta cualquier color que caiga demasiado cerca de otro ya extraído.
Cómo usar el generador
- Elige cuántos quieres. De uno a veinticuatro. El lote se vuelve a dibujar al instante, y el primero es siempre el mismo al cargar la página, así que nada se mueve mientras lees.
- Elige el muestreo y la separación. «Perceptualmente uniforme» reparte el lote por toda la luminosidad; «sRGB uniforme» es la extracción ingenua, que se mantiene para que veas la diferencia. La separación descarta cualquier color más cercano que la distancia elegida a otro ya escogido.
- Copia uno, o todos. Haz clic en una muestra para copiar su hexadecimal, o llévate el lote entero como lista separada por saltos de línea. Pulsa «Nuevos colores» para otra extracción.
El sRGB uniforme no está bien repartido, y no en el sentido que imaginas
La queja habitual sobre el RGB aleatorio es que produce colores turbios y oscuros. Contado de forma exhaustiva sobre una malla de 64×64×64 del cubo —262.144 colores, ordenados en décimas de luminosidad percibida— ocurre lo contrario. La décima más oscura contiene **20 colores**. No un 20%: veinte. La siguiente tiene 950. Entre las dos, la quinta parte más oscura del rango perceptual supone un 0,37% del cubo, y la banda más poblada es la de 0,6–0,7, con un 21,66%.
Así que un color RGB tomado al azar casi nunca es oscuro. La razón es que la luminosidad percibida no es lineal respecto a los valores de canal: el cubo solo alcanza luminosidades bajas en un rincón muy pequeño junto al negro, y todo lo demás se amontona en la mitad superior. Muestrear 200.000 colores del modo ingenuo deja un 0,00% en la banda más oscura; muestrear de forma uniforme en luminosidad deja un 10,06%, y las diez bandas quedan entre el 9,88% y el 10,13%.
Conseguir ese reparto uniforme cuesta algo más de lo que parece, y el atajo evidente no lo logra. Extraer uniformemente de una caja en un espacio perceptual y tirar lo que quede fuera de sRGB descarta un 21,8% de las extracciones, pero no de forma pareja, porque la gama es estrecha cerca del negro y del blanco. Eso empuja a los supervivientes de vuelta hacia el centro, que es justo el sesgo que el muestreo perceptual pretendía quitar: medido, quedaba solo 1,36 veces más plano que el cubo bruto. La solución es elegir primero una luminosidad y un tono, calcular cuánto color admite realmente esa combinación concreta, y sacar el croma de dentro de ese margen.
Las paletas aleatorias chocan
Pide ocho colores al azar y hay un 78,0% de probabilidad de que dos estén a menos de 0,1 en Oklab. Con cinco colores es un 41,2%; con doce, un 97,5%.
Para hacerse una idea de esa distancia: del negro al blanco hay 1,000, del rojo al verde 0,520, y dos hexadecimales consecutivos —#808080 y #818181— están a 0,0034. Una separación de 0,1 es lo bastante pequeña como para que dos líneas de un gráfico pintadas de esos colores se confundan con facilidad, que es exactamente la situación que una leyenda tiene que aguantar.
El ajuste de separación lo resuelve por descarte: se saca un candidato y, si está más cerca del umbral que cualquiera de los ya elegidos, se tira y se saca otro. El panel bajo las muestras indica el par más cercano del lote que has obtenido, así que la garantía se ve en vez de afirmarse.
Limitaciones honestas
Una separación grande y un número grande no siempre son compatibles. En la gama sRGB solo cabe cierta cantidad, y pedir veinte colores todos a 0,15 de distancia acaba siendo insatisfacible. Cuando se agota el presupuesto de descartes, la herramienta completa el lote igualmente y lo dice: devolver menos colores de los pedidos, o quedarse en bucle, serían dos cosas peores que reconocer que se soltó la restricción.
La distancia es una recta en Oklab, que es una buena medida perceptual pero no una afirmación sobre tus ojos. Oklab se diseñó para que distancias iguales parezcan diferencias parecidas, y es lo que usa hoy CSS, pero un umbral de 0,1 es un ajuste de esta página y no un estándar: por eso el artículo te da las referencias de arriba en vez de afirmar un umbral de percepción que esta página no ha medido.
La aleatoriedad viene de un generador con semilla, pequeño y no criptográfico. Es deliberado: hace reproducible cada lote y permite que las pruebas comprueben distribuciones. Si necesitas valores impredecibles para algo importante, el generador de contraseñas de este sitio usa la fuente criptográfica del navegador.
Nada de esto tiene en cuenta las deficiencias de visión del color. Dos colores pueden estar bien separados en Oklab y aun así confundirse para quien tiene una deficiencia rojo-verde, porque la distancia se calcula para una visión tricromática típica. Una paleta que deba funcionar para todo el mundo hay que comprobarla específicamente para eso.
Cuarenta comprobaciones cubren la distribución contada de forma exhaustiva, las tasas de colisión, la búsqueda del límite de gama, la garantía de separación y la uniformidad del generador con semilla.
¿Por qué es gratis?
Es aritmética y un número al azar, ejecutándose en tu navegador. No se sube nada, no hay cuenta y no hay límite de lotes.
Si lo que quieres es un color concreto y no uno al azar, el selector de color y los conversores hexadecimales de este sitio son igual de gratuitos y también locales.