Ruby, Generate a random hex color

Viewed 19131

How can I generate a random hex color with ruby?

5 Answers

One-liner with unpack: Random.new.bytes(3).unpack("H*")[0]

Since ruby 2.6.0 you can do it even shorter: Random.bytes(3).unpack1('H*')

also you can do this:

colour = '#%X%X%X' % 3.times.map{ rand(255) }

some updates:

or if you want to freeze any color:

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

then

# 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
Related