rubyでランダムな色を生成する

# rubyでランダムな色を生成する

色の表現の仕組みがわかっているとなんてことないですが、
ちょちょっとコーディングするときにあったら便利かも。
※ 今回は、厳密にランダムであることは求めてません。

```ruby
R_COLOR_RANGE = [*0..255]
G_COLOR_RANGE = [*0..255]
B_COLOR_RANGE = [*0..255]

r = R_COLOR_RANGE.sample
g = G_COLOR_RANGE.sample
b = B_COLOR_RANGE.sample
color = "##{"%02x"%r}#{"%02x"%g}#{"%02x"%b}"
puts color
```

実行結果

```
#87ba60
```

実際に描画ライブラリを使って色を出力してみた結果

![#6acf5e.png](https://qiita-image-store.s3.amazonaws.com/0/104518/c6db1cc8-5858-89b6-cdb5-e0b78c84f9f0.png) ![#6ef8a8.png](https://qiita-image-store.s3.amazonaws.com/0/104518/15314592-110b-5160-db34-0669ea91e537.png) ![#131ba0.png](https://qiita-image-store.s3.amazonaws.com/0/104518/2674608d-df95-d6b0-87d3-25d72848a34b.png) ![#9191fa.png](https://qiita-image-store.s3.amazonaws.com/0/104518/98e7785d-5f4d-50b3-5016-75d2dd9ef926.png) ![#838528.png](https://qiita-image-store.s3.amazonaws.com/0/104518/8db6586b-7ced-b4ab-f56f-c95c56d5af9c.png) ![#e3c850.png](https://qiita-image-store.s3.amazonaws.com/0/104518/6a92e148-d79a-6de4-b5a7-d79e7521550b.png) ![#f298e4.png](https://qiita-image-store.s3.amazonaws.com/0/104518/eda6dbf9-eb7f-ab0d-9e4f-3d5ba58f70d3.png) ![#ff0dc2.png](https://qiita-image-store.s3.amazonaws.com/0/104518/e088cc84-7361-be06-fb30-fbaa09a4bd83.png)

※ 名前順でソートしたので見た目揃ってますが、出現順はランダムでした

# 色の表記まめ知識

* R(赤)G(緑)B(青)でそれぞれ1バイトずつ使う表記法を**16進トリプレット表記**というらしいです。1バイトなのでレンジは [0~255]
* `#abcdef`で、下記のような成分です
  * **R**：`ab(171)`
  * **G**：`cd(205)`
  * **B**：`ef(239)`
* `[0,0,0]`で黒、`[255,255,255]`で白ですね。

# 色に偏りを持たせる

上記をふまると、色に偏りを持たせることも出来ます。

## 明るめ

下記のようにすると明るめな色に偏ります。黒背景に何か書きたいときとかに使えそう。

```ruby
R_COLOR_RANGE = [*126..255]
G_COLOR_RANGE = [*126..255]
B_COLOR_RANGE = [*126..255]
```

実行結果

![#7fc9cd.png](https://qiita-image-store.s3.amazonaws.com/0/104518/b5c517f9-b125-48fb-8ea4-967b37dda6d4.png) ![#9ce581.png](https://qiita-image-store.s3.amazonaws.com/0/104518/742a9f0b-f751-d0e7-6ced-c30e30cfba3f.png) ![#83daf2.png](https://qiita-image-store.s3.amazonaws.com/0/104518/44405a11-304d-8436-c113-c3c04a5497b2.png) ![#ee81ee.png](https://qiita-image-store.s3.amazonaws.com/0/104518/67d57074-10c8-43fd-bea8-a611d7d3f604.png) ![#efc2fd.png](https://qiita-image-store.s3.amazonaws.com/0/104518/258081b4-d18e-f0cf-d532-c565fa96ac4e.png) ![#f5bfec.png](https://qiita-image-store.s3.amazonaws.com/0/104518/b9eac3ff-4445-aac3-5e10-11b424670a3a.png)


## 青っぽく

```ruby
COLOR_RANGE = [*50..255]
R_PERCENT_RANGE = [*0..80]
G_PERCENT_RANGE = [*0..80]

b = COLOR_RANGE.sample
r = b * R_PERCENT_RANGE.sample / 100
g = b * G_PERCENT_RANGE.sample / 100
```

実行結果

![#0c48d4.png](https://qiita-image-store.s3.amazonaws.com/0/104518/c7763780-3a80-319b-3475-a53a2967af74.png) ![#000040.png](https://qiita-image-store.s3.amazonaws.com/0/104518/fcfefe05-101f-9a0e-328b-1873e561cf07.png) ![#223dc0.png](https://qiita-image-store.s3.amazonaws.com/0/104518/9ee1da57-77aa-ef52-d0db-44f7a09c0005.png) ![#243d9e.png](https://qiita-image-store.s3.amazonaws.com/0/104518/24be5c78-88fd-5300-430a-c8b38319faac.png) ![#7992be.png](https://qiita-image-store.s3.amazonaws.com/0/104518/e9f40c8c-9f2b-8351-a5f7-c357ba7b5c7d.png) ![#101151.png](https://qiita-image-store.s3.amazonaws.com/0/104518/45e5b296-5438-41b3-1090-e5b91de1fa8a.png)

# まとめ

こんな感じで、被らないように色を自動生成したい時なんかに使えそう。

# 動作検証環境

* Mac OS X 10.9.5
* ruby 2.0.0