รหัสสี CSS แบบสุ่ม


10

บล็อกนี้โพสต์เกี่ยวกับการสร้างรหัสสี CSS แบบสุ่มใน JavaScript มีหลายวิธีในการสร้างสีแบบสุ่มใน JavaScript สั้นที่สุดที่ฉันสามารถหาคือ:

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

หากคุณไม่คุ้นเคยกับเอกสารสีอ่านรหัส CSS ที่นี่

เราทำได้ดีกว่านี้ไหม แล้วภาษาอื่น ๆ ล่ะ?


ของคุณเสียคุณพลาดไป+หลังจาก'#'
Doorknob

1
คุณสามารถนำส่วนแบ่งออกได้โดยทำสิ่งนี้#'+(Math.random()*0xffffff|0).toString(16)
Griffin

1
"0xffffff" จำเป็นสำหรับอะไร ฉันไม่เห็นความแตกต่างมากในผลลัพธ์ของฉันหากปราศจากมัน
path411

4
@ path411 ในทางทฤษฎีMath.random().toString(16)สามารถสร้างการแสดงที่มีเลขฐานสิบหกน้อยกว่า 6 หลังจากจุดทศนิยม (hexa) ซึ่งในกรณีนี้ฟังก์ชั่นจะทำลาย ตัวอย่างเช่น0.1658172607421875กลายเป็น0.2A73เป็นเลขฐานสิบหก
primo

คำตอบ:


26

PHP 23 ไบต์

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

อยู่ที่ไหนÿ255 ตัวอักษรบิตและจะตัดสตริงที่ส่งคืนจากmd5ซึ่งอยู่ในรูปแบบเลขฐานสิบหกอยู่แล้ว


7
นี่คือหนึ่งในโซลูชันที่ฉันโปรดปรานบนเว็บไซต์
กริฟ

7

รหัสตัวละครสามตัวก็ใช้ได้เช่นกันดังนั้นฉันสามารถบันทึกตัวอักษร ( 4095 == 0xfff):

ทับทิม, 24 23 22 18

'#%03x'%rand(4095)

ถ้าฉันต้องใช้แบบ 6-char ดังนั้น:

ทับทิม, 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

@Mohsen ใช่ แต่ทับทิมได้รับสับสนและคิดว่าฉันโทรto_sบน4095ถ้าผมละเว้นพวกเขา
ลูกบิดประตู

คุณสามารถรับมันลงไปที่ 20 ด้วยสตริงรูปแบบ sprintf:'#%06x'%rand(8**8-1)
Paul Prestidge

@ ประสานดีขอบคุณ! การแก้ไข
Doorknob

6

จาวาสคริ

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

สั้นเพียงเล็กน้อยที่ 42


1
ฉันไม่แน่ใจว่าทำไมสิ่งนี้จึงถูกลดระดับลง มันทำงานได้ดีในทุกเบราว์เซอร์ที่ฉันทดสอบ +1
โม่

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

@Mohsen ดี! ไม่ทราบว่าชิ้นสามารถลบได้
tristin

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)
  • '#',: เพิ่ม a #ไว้ด้านหน้า

6?16แม้ว่าจะมีค่าสุ่ม6 ค่าที่ไม่ซ้ำกันซึ่งทำให้พื้นที่สีแคบลง ...
mniip


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.