Ten post na blogu o generowaniu losowych kodów kolorów CSS w JavaScript ma wiele rozwiązań do generowania losowych kolorów w JavaScript. Najkrótsze, jakie mogę znaleźć, to:
'#'+(Math.random()*0xffffff).toString(16).slice(-6)
Jeśli nie znasz kodu kolorów CSS, przeczytaj dokumentację tutaj.
Czy możemy zrobić lepiej? Co z innymi językami?
+
po'#'
#'+(Math.random()*0xffffff|0).toString(16)
Math.random().toString(16)
może tworzyć reprezentację z mniej niż 6 cyframi szesnastkowymi po przecinku (heksa), w którym to przypadku funkcja się zepsuje. Na przykład 0,1658172607421875 staje się 0,2A73 w układzie szesnastkowym.Odpowiedzi:
PHP 23 bajty
Gdzie
ÿ
jest znak 255. Bitowo i obetnie zwrócony ciąg znakówmd5
, który jest już w formacie szesnastkowym.źródło
Poprawne są również trzy znaki kodowe, więc mogę zapisać niektóre znaki (
4095 == 0xfff
):Ruby,
24232218Gdybym miał użyć jednego 6-char, a następnie:
Ruby,
2827262420Ogoliłem jedną postać, ponieważ
8**8-1 == 0xffffff
Dzięki chron dla formatu ciąg, zapisując 4 znaki!
Oszukiwanie (mając na uwadze ten pasek xkcd ):
Ruby / JS / Python / Perl / wiele więcej, 6 (lub 5)
Zapewniam cię, wygenerowałem to losowo!
Jeszcze lepsza wersja:
źródło
to_s
na4095
gdybym je pominąć.'#%06x'%rand(8**8-1)
JavaScript
Trochę krótszy w wieku 42 lat.
Pokaż fragment kodu
źródło
#'+Math.random().toString(16).slice(-6)
Ryba 79
Nie jest to najkrótsze rozwiązanie na świecie, ale kodowanie było fajne :)
Nie jest to również równomierny rozkład, ale wszystkie wyjścia mają niezerowe prawdopodobieństwo 7, a F to najprawdopodobniej cyfry.
Wyjścia:
źródło
APL (17)
Wyjaśnienie:
6?16
: 6 liczb losowych od 1 do 16⎕D,⎕A
: cyfry (0..9
), po których następuje alfabet (A..Z
) (ale zawsze używane są tylko pierwsze 16 wartości, tj.0..F
)'#',
: dodaj a#
z przoduźródło
6?16
jest 6 nie powtarzających się losowych wartości, które nieco zawężają przestrzeń kolorów ...Bash (51)
źródło
Python 3 , 53 bajty
Wypróbuj online!
źródło