2017-04-16 11 views
2

enter image description here明るいランダムな色のPython

こんにちはすべてを取得し、私のヘビのゲームプログラムでは、私は、ユーザーが「レインボー」のテーマを選択すると、ランダムな色を複数回生成する必要があります。オンライン見た後、私はこれが見つかりました:最も多くの票を

Generating a Random Hex Color in Python

に答えをしかし、このプログラムは、同様に非常に薄暗い色を生成

import random 
r = lambda: random.randint(0,255) 
print('#%02X%02X%02X' % (r(),r(),r())) 

の溶液を得ました。例えば暗褐色、時には黒色であってもよい。ご覧のように、これらの色の中には、虹色のテーマと一致しないものがあります。

明るいオレンジ、ピンク、赤、青などのような鮮やかな色が得られるように、上記のコードをどのように変更すればよいでしょうか?仮想的な解決策は、randint rの最小値を増やすことでしたが、それはすべての色を非常に白くしました。 : '(

はPlzは、plzは、plzは、ヘルプは非常に高く評価されます

おかげでみんな

+1

'random.randint(128,255)'はそれを明るい側に保ちます。 – schwobaseggl

+0

もう1つのことは、ヘックスの3つの部分が似ている場合です(#000000や#ecececのようにグレースケールの色が出るので避けてください) – Lucas

+2

HSVで彩度の高い色を生成し、RGBに変換できます。標準ライブラリの 'colorsys'モジュールを使って変換を行います:https://docs.python.org/3.6/library/colorsys.html –

答えて

5

は「レベル」パラメータと上記の番号として0.5周りの数字を使用してランダムなHLS色を(作成します。 5を「彩度」パラメータとして)、RGBに変換します。

import random 
import colorsys 
h,s,l = random.random(), 0.5 + random.random()/2.0, 0.4 + random.random()/5.0 
r,g,b = [int(256*i) for i in colorsys.hls_to_rgb(h,l,s)] 

これにより、常に飽和度の高い明るい色が得られます。

+0

ありがとうTimさん、あなたのコードを少し修正しましたが、 (リンク)(https://en.wikipedia.org/wiki/HSL_and_HSV)、また素敵なウェブサイト[リンク](http://hslpicker.com/#0af529)のおかげで、便利なdandy wikipediaページ)、私は "飽和"と明るさ(l)の良い範囲を見つけることができました:ええ、それは軽さによると、ウィキによると。 – Lunkle

0

理由だけではなく、リスト内のすべてのお好みの色の16進コードを入れて、生成されません。! ?そのリストのランダム指数私は今あなたに色の名前の代わりに、六角-コードを使用していますが、例えば:

>>> clist = ["orange", "pink", "red", "blue"] 
>>> for i in range (1, 10): 
...  rcol = random.randint(0,len(clist)-1) 
...  print(clist[rcol]) 
... 
red 
orange 
red 
pink 
orange 
orange 
red 
blue 
pink 
関連する問題