Учитывая эту функцию, я хочу заменить цвет на генератор случайных цветов.
document.overlay = GPolyline.fromEncoded({
color: "#0000FF",
weight: 10,
points: encoded_points,
zoomFactor: 32,
levels: encoded_levels,
numLevels: 4
});
Как мне это сделать?
javascript
random
colors
n00ki3
источник
источник
0.001
то результатом является"#4189"
(недопустимый цвет - 4 цифры)'#'+Math.random().toString(16).substr(2,6)
(источник: CodeGolf )Ответы:
Используйте
getRandomColor()
вместо"#0000FF"
:источник
Math.round(Math.random()*15)
составляют только 1:30, в то время как шансы других чисел 1:15.Я сомневаюсь, что все будет быстрее или короче, чем этот:
Вызов!
источник
'#'+(Math.random()*0xFFFFFF<<0).toString(16);
('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6)
всегда будет возвращать длину 6. хотя этот метод по-прежнему (редко) будет возвращать небольшие числа, которые дают результаты, такие как,000cf4
или0000a7
я думаю, что это немного странно. в этих случаях красный компонент не влияет на случайный цвет.Вот еще один взгляд на эту проблему.
Моей целью было создать яркие и четкие цвета. Чтобы убедиться, что цвета различны, я избегаю использования генератора случайных чисел и выбираю «равномерно расположенные» цвета из радуги.
Это идеально подходит для создания всплывающих маркеров в Картах Google, которые имеют оптимальную «уникальность» (то есть, нет двух маркеров, которые будут иметь одинаковые цвета).
Если вы хотите увидеть, как это выглядит в действии, см. Http://blog.adamcole.ca/2011/11/simple-javascript-rainbow-color.html .
источник
Кто может победить это?
Гарантированно работать все время: http://jsbin.com/OjELIfo/2/edit
На основе комментария @eterps приведенный выше код может генерировать более короткие строки, если шестнадцатеричное представление случайного цвета очень короткое (
0.730224609375
=>0.baf
)Этот код должен работать во всех случаях:
источник
0.730224609375 = 0x3fe75e0000000000, 0.43603515625 = 0x3fdbe80000000000, 0.957763671875 = 0x3feea60000000000
.Едва ли какая-нибудь мантисса используется! Они просто прославленные фракции. Собственно '12 цифра»результат будет давать результаты , как:0.347876714234 = 0x3fd6439cb1ab32ac, 0.447556256665 = 0x3fdca4c2ff5fc450
Math.random()
(которые, я должен предположить, отвечает за результаты @ etertp), на более качественные, поэтому такие типы случайных чисел низкого качества должны быть в прошлом. сейчас же.Вы также можете использовать HSL, доступный в любом хорошем браузере ( http://caniuse.com/#feat=css3-colors )
Это даст вам только яркие цвета, вы можете поиграть с яркостью, насыщенностью и альфа.
источник
'hsla(' + (Math.floor(Math.random()*360) + ', 100%, 70%, 1)'
Нет необходимости в хэше шестнадцатеричных букв. JavaScript может сделать это сам по себе:
источник
Мне нравится этот:
'#' + (Math.random().toString(16) + "000000").substring(2,8)
источник
'#' + Math.floor(Math.random()*16777215).toString(16);
'#' + (0.125).toString(16).substring(2, 8) === '#2'
. Это опасно, потому что вероятность низкая (1 из 4096 я думаю), поэтому ошибка может пройти через тестирование. Вы должны ('#' + Math.random().toString(16) + "000000").substring(2, 8)
'#' + (Math.random().toString(16) + "000000").substring(2,8)
Случайная генерация цвета с регулировкой яркости:
источник
источник
Math.random()
вернуть,0.125
то результатом будет#0.2
(недопустимый цвет) (вместо среза нужно добавить отступы)Статья Пола Айриша (Paul Irish) о генераторе кодов случайных шестнадцатеричных кодов на JavaScript просто потрясающая Использование:
Вот ссылка на источник:
http://www.paulirish.com/2009/random-hex-color-code-snippets/
источник
0.00001
то результат#a7
(неправильный цвет)'#' + Math.floor(Math.random()*16777215).toString(16).padStart(6, '0')
Вот поворот в решении, предоставленном @Anatoliy.
Мне нужно было генерировать только светлые цвета (для фона), поэтому я выбрал трехбуквенный (#AAA) формат:
источник
Если вы такой нуб, как я, не разбираетесь в шестнадцатеричных числах и тому подобном, это может быть более интуитивно понятно.
Вам просто нужно получить строку, такую как
'rgb(255, 123, 220)'
источник
Это можно легко найти с помощью поиска Google:
Обновленная версия:
источник
Короткий ответ с блокнотом до точного размера
'#'+((1<<24)*(Math.random()+1)|0).toString(16).substr(1)
источник
Разбивка того, как это работает:
Math.random()*256
получает случайное число (с плавающей запятой) от 0 до 256 (от 0 до 255 включительно).Пример результата: 116.15200161933899
Добавление
|0
полос после всего после десятичной точки.Например: 116.15200161933899 -> 116
Использование
.toString(16)
преобразует это число в шестнадцатеричное (основание 16).Пример: 116 -> 74
Другой 228 -> e4
Добавление
"0"
колодок это с нуля. Это будет важно, когда мы получим подстроку, поскольку наш конечный результат должен иметь два символа для каждого цвета.Пример: 74 -> 074
Другой пример: 8 -> 08
.substr(-2)
получает только последние два символа.Пример: 074 -> 74
Другой пример: 08 -> 08 (если бы мы не добавили
"0"
, это привело бы к «8» вместо «08»)for
Цикл выполняется в этом цикле три раза, добавляя каждый результат в строку цвета, создавая что - то вроде этого:#7408e4
источник
Так что, хотя все ответы здесь хорошие, я хотел немного больше контролировать результат. Например, я хотел бы предотвратить появление почти белых оттенков, при этом получая яркие яркие цвета, а не размытые оттенки.
Теперь я могу указать 3 произвольных диапазона для выбора значений RGB. Вы можете вызывать его без аргументов и получить мой набор по умолчанию, который обычно генерирует довольно яркий цвет с некогда очевидным доминирующим оттенком, или вы можете указать свой собственный диапазон диапазонов.
источник
Комментарий главного ответа, получивший наибольшее количество голосов, говорит о том, что подход Мартина Анкерла лучше, чем случайные шестнадцатеричные числа, и хотя я не улучшил методологию Анкерла, я успешно перевел его на JavaScript. Я решил опубликовать дополнительный ответ на этот и так мегабаритный SO поток, потому что в верхнем ответе есть еще один комментарий, связанный с Gist с реализацией JS логики Ankerl, и эта ссылка не работает (404). Если бы у меня была репутация, я бы просто прокомментировал созданную мной ссылку на jsbin.
https://jsbin.com/qeyevoj/edit?js,console
источник
Для приличной случайности.
Случайный цвет
Случайная альфа, случайный цвет.
источник
Есть так много способов сделать это. Вот что я сделал:
Генерирует шесть случайных шестнадцатеричных цифр (0-F)
Чрезвычайно короткий однострочный
Создает отдельные компоненты HEX (00-FF)
Переработанная шестнадцатеричная строка (XOR 3 выводят вместе, чтобы сформировать цвет)
источник
0.125
результат#0.2
(неправильный цвет)0.125
=3FC0000000000000
в шестнадцатеричном IEEE. 3 шестнадцатеричные цифры - экспонента, 13 - мантисса. Вероятность того, что мантисса совершенно пуста , составляет 1 к 4,5 квадриллиона . Я тестировал 100 раз в Firefox / Chrome. Вы просто пытаетесь сломать это;). никогда неMath.random
должен давать вам 0,125. И если это произойдет, есть проблема с PRNG, которая не является моей проблемой. Такие дроби, как 0,5, 0,25, 0,0625 и т. Д. Бесполезны, они не содержат случайности. Возможно, у вас есть решение этого крайнего крайнего случая, а? ;)'#'+Math.random().toString(16).split('.')[1].slice(-6).padStart(6,0)
но я предпочитаю этоЕще один генератор случайных цветов:
источник
Array.prototype.reduce
делает его очень чистымТребуется прокладка для старых браузеров.
источник
Вы могли бы использовать эту простую функцию
источник
0.001
результат возвращает результат"#4189"
(недопустимый цвет 4 цифры)http://jsfiddle.net/XmqDz/1/
источник
Используйте отличные цвета .
Он генерирует палитру визуально отличных цветов.
Отдельные цвета легко настраиваются:
источник
Вот мои две версии для генератора случайных шестнадцатеричных кодов.
источник
Эта функция выходит за рамки других ответов двумя способами:
Он пытается генерировать цвета настолько четко, насколько это возможно, находя, какой цвет из 20 попыток имеет самое дальнее евклидово расстояние от других в конусе HSV
Он позволяет вам ограничить диапазон оттенков, насыщенности или диапазона значений, но при этом все же пытается выбрать цвета, максимально различающиеся в этом диапазоне.
Это не суперэффективно, но для разумных значений (кто может даже легко выделить 100 цветов?) Это достаточно быстро.
Смотрите JSFiddle
источник
Почти все предыдущие короткие методы генерируют неправильные шестнадцатеричные коды (пять цифр). Я сталкивался с подобной техникой только без этой проблемы здесь :
Тестовое задание
Попробуйте это в консоли:
источник
0.00001
результат возвращает результат"#000a7"
(неправильный цвет - 5 цифр)Моя версия:
источник
0
делает цвет неrandom
достаточно XD0
доffffff
. Что является идеальным равномерным распределением . Этот ноль только для завершения строки, из соображений использования браузера. Я предлагаю вам посмотреть более внимательно на это решение.карта (возвращает всегда действительный цвет RGB)
Показать фрагмент кода
источник
Вы можете использовать colorchain.js для генерации последовательности цветов с различными оттенками.
источник