Esta publicación de blog sobre la generación de códigos de color CSS aleatorios en JavaScript tiene múltiples soluciones para generar un color aleatorio en JavaScript. Lo más corto que puedo encontrar es esto:
'#'+(Math.random()*0xffffff).toString(16).slice(-6)
Si no está familiarizado con el código de color CSS, lea la documentación aquí.
¿Podemos hacerlo mejor? ¿Qué hay de otros idiomas?
+
después del'#'
#'+(Math.random()*0xffffff|0).toString(16)
Math.random().toString(16)
puede producir una representación con menos de 6 dígitos hexadecimales después del punto decimal (hexa), en cuyo caso la función se rompería. Por ejemplo, 0.1658172607421875 se convierte en 0.2A73 en hexadecimal.Respuestas:
PHP 23 bytes
Donde
ÿ
está el carácter 255. Bitwise y truncará la cadena devueltamd5
, que ya está en formato hexadecimal.fuente
Tres códigos de caracteres también son válidos, por lo que puedo guardar algunos caracteres (
4095 == 0xfff
):Rubí,
24232218Si tengo que usar uno de 6 caracteres, entonces:
Rubí,
2827262420Afeitado un personaje porque
8**8-1 == 0xffffff
¡Gracias a chron por la cadena de formato, ahorrando 4 caracteres!
Hacer trampa (con esta tira xkcd en mente):
Ruby / JS / Python / Perl / mucho más, 6 (o 5)
Te lo aseguro, lo generé al azar!
Una versión aún más tramposa:
fuente
to_s
en4095
si se omiten.'#%06x'%rand(8**8-1)
Javascript
Solo un poco más corto a los 42.
Mostrar fragmento de código
fuente
#'+Math.random().toString(16).slice(-6)
Pescado 79
No es la solución más corta del mundo, pero fue divertido codificar :)
Tampoco es una distribución uniforme, pero todas las salidas tienen una probabilidad distinta de cero 7 y F son dígitos más probables.
Salidas:
fuente
APL (17)
Explicación:
6?16
: 6 números aleatorios del 1 al 16⎕D,⎕A
: los dígitos (0..9
) seguidos del alfabeto (A..Z
) (pero solo se utilizan los primeros 16 valores, es decir0..F
)'#',
: agregue una#
al frentefuente
6?16
6 es que no se repite valores aleatorios sin embargo, que se estrecha el espacio de color un poco ...Golpe (51)
fuente
Python 3 , 53 bytes
Pruébalo en línea!
fuente