Випадковий колірний код CSS


10

У цій публікації в блозі про генерування випадкових кольорових кодів CSS в JavaScript є безліч рішень для створення випадкового кольору в JavaScript. Найкоротший я можу знайти це:

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

Якщо ви не знайомі з кодом кольору CSS, прочитайте тут документацію.

Чи можемо ми зробити краще? Що з іншими мовами?


Твій зламаний, ти пропускаєш +після'#'
Дверна ручка

1
Ви можете видалити шматочок, зробивши це#'+(Math.random()*0xffffff|0).toString(16)
Griffin

1
Для чого потрібен "0xffffff"? Я не бачу великої різниці в своїх результатах без цього.
path411

4
@ path411 Теоретично Math.random().toString(16)може створювати подання з меншими ніж шістьма шістнадцятковими цифрами після (шестигранної) десяткової точки, і в цьому випадку функція буде порушена. Наприклад, 0,1658172607421875 перетворюється на 0,2A73 в шестнадцять.
прим

Відповіді:


26

PHP 23 байти

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

Де ÿсимвол 255. Побітовий і врізає рядок, повернуту з md5, яка вже в шістнадцятковому форматі.


7
Це одне з моїх улюблених рішень на сайті.
Гриффін

7

Три символьні коди також дійсні, тому я можу зберегти кілька символів ( 4095 == 0xfff):

Рубі, 24 23 22 18

'#%03x'%rand(4095)

Якщо мені доведеться скористатися 6-знаковою, тоді:

Рубі, 28 27 26 24 20

Поголив одного персонажа, оскільки 8**8-1 == 0xffffff

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

Завдяки chron за форматний рядок, заощаджуючи 4 символи!


Обман (маючи на увазі цю xkcd смужку ):

Ruby / JS / Python / Perl / багато іншого, 6 (або 5)

"#a83"

Запевняю вас, я генерував це випадковим чином!

Ще більш вигадливий варіант:

"red"

Не потрібні дужки для викликів методів у Ruby, правда?
Мохсен

@Mohsen Так, але Рубі заплутується і думає , що я дзвоню to_sна , 4095якщо я їх опускаю.
Дверна ручка

Ви можете зменшити його до 20 за допомогою рядка формату sprintf:'#%06x'%rand(8**8-1)
Paul Prestidge

@chron Приємно, дякую! Редагування
Doorknob

6

Javascript

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

Трохи коротше на 42.


1
Я не впевнений, чому це було знято. Він прекрасно працює у кожному тестованому браузері. +1
прима

5
#'+Math.random().toString(16).slice(-6)
Мохсен

@Mohsen приємно! Не знав, що фрагмент може створювати негативи.
тристін

3

Риба 79

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

Не найкоротше рішення у світі, але було цікаво кодувати :)

Це також не рівномірний розподіл, але всі виходи мають ненульову ймовірність 7, а F - найімовірніші цифри.

Виходи:

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]

Пояснення:

  • 6?16: 6 випадкових чисел від 1 до 16
  • ⎕D,⎕A: цифри ( 0..9), за якими слідує алфавіт ( A..Z) (але використовуються лише перші 16 значень, тобто 0..F)
  • '#',: додати #передню частину

6?16це 6 випадкових значень, що не повторюються, але це трохи звужує
кольоровий простір


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.