Codice colore CSS casuale


10

Questo post sul blog sulla generazione di codici colore CSS casuali in JavaScript ha molteplici soluzioni per generare un colore casuale in JavaScript. Il più breve che posso trovare è questo:

'#'+(Math.random()*0xffffff).toString(16).slice(-6)

Se non si ha familiarità con il codice colore CSS, leggere la documentazione qui.

Possiamo fare di meglio? E le altre lingue?


Il tuo è rotto, ti manca un +dopo il'#'
Doorknob

1
Puoi rimuovere la fetta in questo modo#'+(Math.random()*0xffffff|0).toString(16)
Griffin,

1
A cosa serve lo "0xffffff"? Non vedo molta differenza nei miei risultati senza di essa.
path411,

4
@ path411 Teoricamente, Math.random().toString(16)può produrre una rappresentazione con meno di 6 cifre esadecimali dopo il punto decimale (hexa), nel qual caso la funzione si spezzerebbe. Ad esempio, 0,1658172607421875 diventa 0,2A73 in esadecimale.
primo

Risposte:


26

PHP 23 byte

#<?=md5(rand())&ÿÿÿÿÿÿ;

Dov'è il ÿcarattere 255. Bit a bit e troncerà la stringa restituita md5, che è già in formato esadecimale.


7
Questa è una delle mie soluzioni preferite sul sito.
Griffin,

7

Sono validi anche tre codici di caratteri, quindi posso salvare alcuni caratteri ( 4095 == 0xfff):

Ruby, 24 23 22 18

'#%03x'%rand(4095)

Se io devo usare un 6-char uno, poi:

Ruby, 28 27 26 24 20

Rasato un personaggio perché 8**8-1 == 0xffffff

'#%06x'%rand(8**8-1)

Grazie a chron per la stringa di formato, risparmiando 4 caratteri!


Barare (tenendo presente questa striscia xkcd ):

Ruby / JS / Python / Perl / molti altri, 6 (o 5)

"#a83"

Ti assicuro, l'ho generato in modo casuale!

Una versione ancora più economica:

"red"

Non hai bisogno di parentesi per le chiamate di metodo in Ruby, giusto?
Mohsen,

@Mohsen Sì, ma Rubino si confonde e pensa che io sto chiamando to_ssu 4095se li tralascio.
Maniglia della porta

Puoi arrivare a 20 con una stringa in formato sprintf:'#%06x'%rand(8**8-1)
Paul Prestidge,

@chron Nice, grazie! Modifica
Maniglia

6

Javascript

'#'+Math.random().toString(16).substr(2,6)

Solo un po 'più corto a 42 anni.


1
Non sono sicuro del motivo per cui questo è stato downvoted. Funziona bene in tutti i browser che ho testato. +1
primo

5
#'+Math.random().toString(16).slice(-6)
Mohsen,

@Mohsen simpatico! Non sapevo che la fetta potesse fare degli aspetti negativi.
Tristin,

3

Pesce 79

vnnnnnnnn 
601234567;
>xxxxxxxx<
 89""""""?
 nnABCDEF:
 vv""""""-
 vvoooooo1
 >>>>>>>>^

Non è la soluzione più breve al mondo, ma è stato divertente programmare :)

Inoltre non è una distribuzione uniforme, ma tutte le uscite hanno una probabilità diversa da zero 7 e F sono molto probabilmente cifre.

Uscite:

python fish.py randomColor.fish
07FFF7

python fish.py randomColor.fish
07EFD7

python fish.py randomColor.fish
366F67

python fish.py randomColor.fish
977FD7

python fish.py randomColor.fish
97F7F7

python fish.py randomColor.fish
87F6FF

1

APL (17)

'#',(⎕D,⎕A)[6?16]

Spiegazione:

  • 6?16: 6 numeri casuali da 1 a 16
  • ⎕D,⎕A: le cifre ( 0..9) seguite dall'alfabeto ( A..Z) (ma vengono utilizzati solo i primi 16 valori, cioè 0..F)
  • '#',: aggiungi a #in primo piano

6?16sono 6 valori casuali non ripetitivi , che restringono leggermente lo
spazio

1

Bash (51)

od -N4 -An -tx /dev/urandom | cut -c2-7 | sed s/^/#/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.