Rastgele CSS Renk kodu


10

JavaScript'te rastgele CSS renk kodları oluşturmayla ilgili bu blog yazısında JavaScript'te rastgele bir renk oluşturmak için birden çok çözüm bulunmaktadır. Bulabildiğim en kısa şey şudur:

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

CSS renk kodunu bilmiyorsanız buradaki belgeleri okuyun.

Daha iyisini yapabilir miyiz? Diğer diller ne olacak?


Sevgiler kırıldı, +sonra bir eksik'#'
Doorknob

1
Bunu yaparak dilimi kaldırabilirsiniz#'+(Math.random()*0xffffff|0).toString(16)
Griffin

1
"0xffffff" ne için gereklidir? Onsuz sonuçlarımda çok fazla bir fark görmüyorum.
path411

4
@ path411 Teorik olarak, Math.random().toString(16)(hexa) ondalık noktasından sonra 6 onaltılık basamaktan daha az bir gösterim oluşturabilir, bu durumda işlev bozulur . Örneğin, ,1658172607421875 olur 0.2A73 hex.
primo

Yanıtlar:


26

PHP 23 bayt

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

ÿ255 karakteri nerede. Bitsel ve döndürülen dizgiyi kesecek ve md5bu da onaltılık biçimdedir.


7
Bu, sitedeki en sevdiğim çözümlerden biri.
Griffin

7

Üç karakter kodu da geçerlidir, bu yüzden bazı karakterleri kaydedebilirim ( 4095 == 0xfff):

Yakut, 24 23 22 18

'#%03x'%rand(4095)

Ben ise sahip sonra, 6 karakter birini kullanmak:

Yakut, 28 27 26 24 20

Bir karakter traş edildi çünkü 8**8-1 == 0xffffff

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

Biçim dizesi için chron sayesinde 4 karakter tasarrufu!


Hile ( bu xkcd şeridi akılda tutarak):

Ruby / JS / Python / Perl / çok daha fazlası, 6 (veya 5)

"#a83"

Sizi temin ederim, rastgele oluşturdum!

Daha da ucuz bir versiyon:

"red"

Ruby'de yöntem çağrıları için parantez gerekmez, değil mi?
Mohsen

Evet @Mohsen ama Ruby şaşkın ve aradım düşünüyor alır to_süzerinde 4095Onları atlarsanız.
Kapı tokmağı

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

@chron Güzel, teşekkürler! Düzenleme
Kapı Tokmağı

6

JavaScript

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

42'de biraz daha kısa.


1
Bunun neden reddedildiğinden emin değilim. Test ettiğim her tarayıcıda iyi çalışıyor. +1
primo

5
#'+Math.random().toString(16).slice(-6)
Mohsen

@Mohsen güzel! Dilimin negatif yapabileceğini bilmiyordum.
tristin

3

Balık 79

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

Dünyadaki en kısa çözüm değil, ama kodlamak eğlenceliydi :)

Aynı zamanda tekdüze bir dağılım değildir, ancak tüm çıkışların sıfır olmayan bir olasılığı vardır 7 ve F büyük olasılıkla rakamlardır.

Çıktılar:

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]

Açıklama:

  • 6?16: 1'den 16'ya kadar 6 rastgele sayı
  • ⎕D,⎕A: rakamlar ( 0..9) ve ardından alfabe ( A..Z) (ancak şimdiye kadar sadece ilk 16 değer kullanılır, yani 0..F)
  • '#',A eklemek #öne

6?166 tekrarlayan rastgele değerler olsa da, bu da renk uzayını biraz daraltıyor ...
mniip

1

Bash (51)

od -N4 -An -tx /dev/urandom | cut -c2-7 | sed s/^/#/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.