如何使用ruby生成随机十六进制颜色?
答案 0 :(得分:140)
这是一种方式:
colour = "%06x" % (rand * 0xffffff)
答案 1 :(得分:26)
SecureRandom.hex(3)
#=> "fef912"
SecureRandom
模块是Ruby标准库的一部分
require 'securerandom'
它在Rails中自动加载,但如果您使用Rails 3.0或更低版本,则需要使用
ActiveSupport::SecureRandom.hex(3)
答案 2 :(得分:12)
您可以单独生成每个组件:
r = rand(255).to_s(16)
g = rand(255).to_s(16)
b = rand(255).to_s(16)
r, g, b = [r, g, b].map { |s| if s.size == 1 then '0' + s else s end }
color = r + g + b # => e.g. "09f5ab"
答案 3 :(得分:3)
带有unpack
的单线:
Random.new.bytes(3).unpack("H*")[0]
答案 4 :(得分:1)
您也可以这样做:
colour = '#%X%X%X' % 3.times.map{ rand(255) }
一些更新:
或者如果您要冻结任何颜色:
class RandomColor
def self.get_random
rand(255)
end
def self.color_hex(options = {})
default = { red: get_random, green: get_random, blue: get_random }
options = default.merge(options)
'#%X%X%X' % options.values
end
end
然后
# full random colour
RandomColor.color_hex() => #299D3D
RandomColor.color_hex() => #C0E92D
# freeze any colour
RandomColor.color_hex(red: 100) => #644BD6
RandomColor.color_hex(red: 100) => #6488D9