Esta postagem no blog sobre a geração de códigos de cores CSS aleatórios em JavaScript tem várias soluções para gerar uma cor aleatória em JavaScript. O mais curto que posso encontrar é o seguinte:
'#'+(Math.random()*0xffffff).toString(16).slice(-6)
Se você não estiver familiarizado com o código de cores CSS, leia a documentação aqui.
Podemos fazer melhor? E outras línguas?
+
após o'#'
#'+(Math.random()*0xffffff|0).toString(16)
Math.random().toString(16)
pode produzir uma representação com menos de 6 dígitos hexadecimais após o ponto decimal (hexa). Nesse caso, a função seria interrompida. Por exemplo, 0.1658172607421875 se torna 0.2A73 em hexadecimal.Respostas:
PHP 23 bytes
Onde
ÿ
está o caractere 255. Bit a bit e truncará a string retornadamd5
, que já está no formato hexadecimal.fonte
Também são válidos três códigos de caracteres, para que eu possa salvar alguns caracteres (
4095 == 0xfff
):Ruby,
24232218Se eu tiver que usar um de 6 caracteres, então:
Ruby,
2827262420Raspou um caractere porque
8**8-1 == 0xffffff
Obrigado ao chron pela string de formato, economizando 4 caracteres!
Trapaça (com esta faixa xkcd em mente):
Ruby / JS / Python / Perl / muito mais, 6 (ou 5)
Garanto-lhe, eu o gerei aleatoriamente!
Uma versão ainda mais cheatier:
fonte
to_s
sobre4095
se eu omiti-los.'#%06x'%rand(8**8-1)
Javascript
Apenas um pouco menor aos 42 anos.
Mostrar snippet de código
fonte
#'+Math.random().toString(16).slice(-6)
Peixe 79
Não é a solução mais curta do mundo, mas foi divertido codificar :)
Também não é uma distribuição uniforme, mas todas as saídas têm uma probabilidade diferente de zero 7 e F são os dígitos mais prováveis.
Saídas:
fonte
APL (17)
Explicação:
6?16
: 6 números aleatórios de 1 a 16⎕D,⎕A
: os dígitos (0..9
) seguidos pelo alfabeto (A..Z
) (mas apenas os 16 primeiros valores são usados, ou seja0..F
)'#',
: adicione um#
à frentefonte
6?16
é 6 não-repetição valores aleatórios, porém, que estreita o espaço de cores um pouco ...Bash (51)
fonte
Python 3 , 53 bytes
Experimente online!
fonte