Generador de colores aleatorios

4 minutos de lectura

Generador de colores aleatorios
n00ki3

Dada esta función, quiero reemplazar el color con un generador de color aleatorio.

document.overlay = GPolyline.fromEncoded({
    color: "#0000FF",
    weight: 10,
    points: encoded_points,
    zoomFactor: 32,
    levels: encoded_levels,
    numLevels: 4
});

¿Cómo puedo hacerlo?

Generador de colores aleatorios
ZPiDER

Dudo que algo sea más rápido o más corto que este:

"#" + ((1<<24)*Math.random() | 0).toString(16)

¡Desafío!

  • Olvidaste rellenar con ceros.

    – usuario123444555621

    1 de mayo de 2011 a las 21:12

  • '#'+(Math.random()*0xFFFFFF<<0).toString(16);

    – Mohsen

    6 de mayo de 2011 a las 7:49

  • @Mohsen, para su información, de vez en cuando su código produce un número de 5 dígitos no válido

    – rochal

    5 de noviembre de 2011 a las 18:05

  • El resultado no se rellena a 6 dígitos.

    – Taha Jahangir

    1 de marzo de 2012 a las 9:03

  • ('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6) siempre devolverá una longitud de 6. aunque este método todavía (rara vez) devolverá números pequeños que dan resultados como 000cf4 o 0000a7 que es un poco hacky creo. en estos casos el componente rojo no contribuye al color aleatorio.

    -bryc

    27 de noviembre de 2012 a las 20:52

  • Hice una implementación simplificada de la misma idea que la respuesta a una pregunta similar stackoverflow.com/a/14187677/421010

    – Andrés

    6 de enero de 2013 a las 22:54

  • Enlace actualizado: blog.adamcole.ca/2011/11/simple-javascript-rainbow-color.html

    – Keven

    10 de noviembre de 2013 a las 1:48


  • Entonces, ¿cuál será el valor del parámetro?

    – Ekramul Hoque

    27 de abril de 2015 a las 12:02

  • También creé algo como esto, pero es bastante aleatorio y bastante distinto. El pseudocódigo es aquí. Utiliza hsv en lugar de rgb, porque hsv tiene un comportamiento mucho más predecible. Si desea ver la implementación de Python, la usé aquí y aquí. Tendrás que buscar a través del código “color”.

    – zondo

    9 de febrero de 2016 a las 22:03

  • @RobertMolina: Lo siento, moví mis cosas a Gitlab. El pseudo-código es ahora aquícon los proyectos aquí y aquí.

    – zondo

    20 de febrero de 2019 a las 16:40

1646975468 3 Generador de colores aleatorios
Mohsen

¿Quién puede vencerlo?

'#' + Math.random().toString(16).substr(-6);

Se garantiza que funcione todo el tiempo.: http://jsbin.com/OjELIfo/2/editar

Según el comentario de eterps, el código anterior aún puede generar cadenas más cortas si la representación hexadecimal del color aleatorio es muy corta (0.730224609375 => 0.baf).

Este código debería funcionar en todos los casos:

function makeRandomColor(){
  var c="";
  while (c.length < 7) {
    c += (Math.random()).toString(16).substr(-6).substr(-1)
  }
  return '#' + c;
}

  • Cuando Math.random() devuelve 0.022092682472568126, este código produce una cadena ‘#5a7dd’ no válida. ¡loco!

    – rochal

    5 de noviembre de 2011 a las 18:10

  • Como este, ya que #ffffff no aparece muy a menudo.

    – Cara de guerra

    1 de diciembre de 2014 a las 16:06

  • Hay bastantes casos en los que esto no funcionará. Verifique la siguiente salida para Math.random()… 0.730224609375, 0.43603515625, 0.957763671875, y la lista continúa…

    – eterps

    27 de marzo de 2015 a las 1:48

  • La versión corta: cuando regresa Math.random 0.125 el resultado es "#0.2" (inválido)

    – Kamil Kielczewski

    19 de marzo de 2019 a las 11:09

  • O aún más básico: 0 es un valor de retorno válido de Math.random y '#' + (0).toString(16).substr(-6) es "#0". Si no te importa, atacaría, aunque el se garantiza que funcione todo el tiempo para evitar confundir a los demás?

    – bluenote10

    17 de junio de 2021 a las 8:18

Generador de colores aleatorios
sierra dev

También puede usar HSL disponible en todos los buenos navegadores (http://caniuse.com/#feat=css3-colores)

function randomHsl() {
    return 'hsla(' + (Math.random() * 360) + ', 100%, 50%, 1)';
}

Esto le dará solo colores brillantes, puede jugar con el brillo, la saturación y el alfa.

// es6
const randomHsl = () => `hsla(${Math.random() * 360}, 100%, 50%, 1)`

  • Cuando Math.random() devuelve 0.022092682472568126, este código produce una cadena ‘#5a7dd’ no válida. ¡loco!

    – rochal

    5 de noviembre de 2011 a las 18:10

  • Como este, ya que #ffffff no aparece muy a menudo.

    – Cara de guerra

    1 de diciembre de 2014 a las 16:06

  • Hay bastantes casos en los que esto no funcionará. Verifique la siguiente salida para Math.random()… 0.730224609375, 0.43603515625, 0.957763671875, y la lista continúa…

    – eterps

    27 de marzo de 2015 a las 1:48

  • La versión corta: cuando regresa Math.random 0.125 el resultado es "#0.2" (inválido)

    – Kamil Kielczewski

    19 de marzo de 2019 a las 11:09

  • O aún más básico: 0 es un valor de retorno válido de Math.random y '#' + (0).toString(16).substr(-6) es "#0". Si no te importa, atacaría, aunque el se garantiza que funcione todo el tiempo para evitar confundir a los demás?

    – bluenote10

    17 de junio de 2021 a las 8:18

1646975469 574 Generador de colores aleatorios
Pedro Mortensen

No hay necesidad de un hash de letras hexadecimales. JavaScript puede hacer esto por sí mismo:

function get_random_color() {
  function c() {
    var hex = Math.floor(Math.random()*256).toString(16);
    return ("0"+String(hex)).substr(-2); // pad with zero
  }
  return "#"+c()+c()+c();
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad