Ruby,生成随机的十六进制颜色

JP *_*shy 51 ruby

如何使用红宝石生成随机十六进制颜色?

Jer*_*ten 142

这是一种方式:

colour = "%06x" % (rand * 0xffffff)
Run Code Online (Sandbox Code Playgroud)

  • String上的[%method](http://ruby-doc.org/core-1.9.3/String.html#method-i-25)使用字符串作为参数的格式规范."%06x"表示:将数字格式化为十六进制,6个字符(本例中为数字)宽,0填充. (8认同)

小智 30

SecureRandom.hex(3)
#=> "fef912"
Run Code Online (Sandbox Code Playgroud)

SecureRandom模块是Ruby标准库的一部分

require 'securerandom'
Run Code Online (Sandbox Code Playgroud)

它在Rails中自动加载,但如果您使用Rails 3.0或更低版本,则需要使用

ActiveSupport::SecureRandom.hex(3)
Run Code Online (Sandbox Code Playgroud)


Dan*_*wak 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"
Run Code Online (Sandbox Code Playgroud)


air*_*led 5

单衬unpackRandom.new.bytes(3).unpack("H*")[0]

从 ruby​​ 2.6.0 开始,你可以做得更短: Random.bytes(3).unpack1('H*')