Случайный цвет в формате hex

Реализуйте функцию, которая возвращает строку, задающую цвет в формате hex.

console.log(randomHex()); // #039fa2

Математика

  • С помощью комбинации нескольких цветов в разных пропорциях можно задать другие цвета. Исторически сложилось, что для человеческого глаза удобнее всего это делать через красный, зеленый и синий.
  • Если каждый цвет задавать одним байтом (1 байт = 8 бит), то получается 256 вариантов для каждого цвета.
  • Числа от 0 до 255 можно записать в шестнадцатеричной системе счисления от 0 до ff.
  • ff === 255, это максимальное шестанцатиричное двузначное число; следующее за ним — 100 === 256.
  • Чтобы все числа были в одном формате, к одноциферным числам — от 0 до f — приписывают слева 0.
  • Итого получается шесть цифр: по две цифры на каждый цвет.
  • hex — это скоращение от hexadecimal (шетнадцатиричный).

Историческая справка

Цветная фотография появилась раньше, чем вы думали. Прокудин-Горский на излете существования Российской империи делал цветные фотографии, используя цветовые фильтры. У Леонида Парфенова есть кино про это (youtube).

Съёмка одного кадра осуществлялась три раза: по очереди через цветные светофильтры синего, зелёного и красного цветов. После чего получались три чёрно-белых негатива.

Для демонстрации итогого результата Прокудин-Горский использовал специальный проектор с тремя линзами и фильтрами. Каждый негатив освещался белым светом, проходил через «свой» фильтр и накладывался на экран. В итоге три проекции складывались (аддитивное смешение) и зритель видел цветное изображение.

Почему были выбраны эти цвета? Комбинация красный–зелёный–синий лучше всего совпадает с чувствительностью колбочек глаза и позволяет охватить максимально широкий диапазон цветов. Как всегда бывает в эволюции, те, кто хорошо различал оттенки зелёного (листья, трава) и находил спелые фрукты (красные, жёлтые, оранжевые), выжили, а остальные нет.