随机CSS颜色代码


10

这篇有关在JavaScript中生成随机CSS颜色代码的博文提供了多种在JavaScript中生成随机颜色的解决方案。我能找到的最短的是:

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

如果您不熟悉CSS颜色代码,请阅读此处的文档。

我们可以做得更好吗?那其他语言呢?


您的电脑坏了,您在+'#'
门把手

1
您可以通过执行以下操作删除切片#'+(Math.random()*0xffffff|0).toString(16)
Griffin

1
所需的“ 0xffffff”是什么?没有它,我的结果不会有多大差异。
path411 2013年

4
从理论上讲,@ path411 Math.random().toString(16)可以产生一个(十六进制)小数点后少于6个十六进制数字的表示形式,在这种情况下,函数将中断。例如,0.1658172607421875的十六进制变为0.2A73
primo

Answers:


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 2013年

@Mohsen是的,但红宝石会很困惑,认为我打电话to_s4095,如果我忽略它们。
门把手

您可以使用sprintf格式字符串将其降至20:'#%06x'%rand(8**8-1)
Paul Prestidge 2013年

@chron尼斯,谢谢!编辑
门把手

6

Java脚本

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

稍短一些,只有42岁。


1
我不确定为什么这被否决了。在我测试过的每种浏览器中,它都能正常工作。+1
primo

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

@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:1至16个6个随机数
  • ⎕D,⎕A:数字(0..9)后跟字母(A..Z)(但仅使用前16个值,即0..F
  • '#',#在前面添加一个

6?16是6个非重复的随机值,但会稍微缩小颜色空间...
mniip 2014年

1

重击(51)

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.