Этот пост в блоге о генерации случайных цветовых кодов CSS в JavaScript имеет несколько решений для генерации случайного цвета в JavaScript. Самое короткое, что я могу найти, это:
'#'+(Math.random()*0xffffff).toString(16).slice(-6)
Если вы не знакомы с цветовым кодом CSS, прочтите документацию здесь.
Можем ли мы сделать лучше? А как насчет других языков?
+
после'#'
#'+(Math.random()*0xffffff|0).toString(16)
Math.random().toString(16)
может создать представление с числом шестнадцатеричных цифр меньше, чем после (hexa) десятичной точки, и в этом случае функция будет прерываться. Например, 0,1658172607421875 становится 0,2A73 в гексе .Ответы:
PHP 23 байта
Где
ÿ
находится символ 255. Побитово и будет обрезать возвращаемую строкуmd5
, которая уже находится в шестнадцатеричном формате.источник
Также допустимы трехсимвольные коды, поэтому я могу сохранить некоторые символы (
4095 == 0xfff
):Рубин,
24232218Если мне нужно использовать 6-символьный, то:
Рубин,
2827262420Сбрил один персонаж, потому что
8**8-1 == 0xffffff
Спасибо chron за форматирование строки, сохраняя 4 символа!
Обман (с учетом этой полосы xkcd ):
Ruby / JS / Python / Perl / многое другое, 6 (или 5)
Уверяю вас, я генерировал это случайно!
Еще более обманчивая версия:
источник
to_s
на ,4095
если я их опускаю.'#%06x'%rand(8**8-1)
Javascript
Просто немного короче в 42.
Показать фрагмент кода
источник
#'+Math.random().toString(16).slice(-6)
Рыба 79
Не самое короткое решение в мире, но было весело писать код :)
Это также не равномерное распределение, но все выходы имеют ненулевую вероятность 7, а F - наиболее вероятные цифры.
Выходы:
источник
APL (17)
Объяснение:
6?16
: 6 случайных чисел от 1 до 16⎕D,⎕A
: цифры (0..9
), за которыми следует алфавит (A..Z
) (но когда-либо используются только первые 16 значений, т.е.0..F
)'#',
: добавить#
в началоисточник
6?16
хотя это 6 неповторяющихся случайных значений, это немного сужает цветовое пространство ...Баш (51)
источник
Python 3 , 53 байта
Попробуйте онлайн!
источник