2012-05-20 36 views
1

我正在製作一個RMagick項目,它可以生成關於尺寸和顏色的隨機橫幅廣告。如何生成六個隨機十六進制顏色並將它們放入Ruby數組中?

第一步是這樣,但它不能正常工作。我使用的是什麼所謂的三元語句來作出這樣的字符串「#FFFFFF,#f0f1cd,#123fff」等

# Generate sixteen random colors 
1.upto(16) { |i| 
    (defined? colors) ? colors << ", #%06x" % (rand(0xffffff)) : colors = "#%06x" % (rand(0xffffff)) 
} 
puts colors.split(',') 

期望得到的結果是不正確的。我希望它分成一個數組,如: [「#ffffff」,「#f0f1cd」,「#123fff」]

在最優雅的方法可能。

回答

7

你可以做到這一點,這將是更容易:

colors = 3.times.map{"%06x" % (rand * 0x1000000)} 

注:如果您在使用Ruby 1.9.3,你可以使用的範圍。

colors = 3.times.map{"%06x" % rand(0..0xffffff)} 
+0

+1有一個小的加法 - 這樣#ffffff永遠不會被生成。 'rand'的範圍是\ [0; 1 \ [(參見[Kernel#rand](http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-rand) ),即1不包括在內。 – emboss

+0

@emboss謝謝,你是對的。我已編輯包含#ffffff – rogeliog

+0

沒有問題,不客氣! – emboss

相關問題