web-dev-qa-db-ja.com

ランダムを使用して色を選択する方法

私はもっ​​と学ぶために小さなプログラムを作ろうとしていますが、ランダムを使用することになると行き詰まります。

これが私がやっていることの例です https://trinket.io/Python/3338c954

私は、random.randrange、random.choice、random.randomをすべてに使用してみましたが、ランダムにはrandrange、choice、またはrandomの関数がないことを示すエラーコードが送信されます。

import turtle, math, random, time

wn = turtle.Screen()
wn.bgcolor('grey')
Rocket = turtle.Turtle()
Rocket.speed(0)
Rocket.color('red') ## this is what i want to randomize
rotate=int(90)

def drawCircles(t,size):
    for i in range(15):
        t.circle(size)
        size=size-10
def drawSpecial(t,size,repeat):
    for i in range(repeat):
        drawCircles(t,size)
        t.right(360/repeat)
drawSpecial(Rocket,100,10)

最終的には、サイズや配置などのランダム化されたプロセスを実装したいのですが、ここでは色に焦点を当てています。

23
jman8453

追加のインポートを使用しなくても、かなり簡単です。

_turtle.colormode(255) # sets the color mode to RGB

R = random.randrange(0, 256, 100) # last value optional (step) 
B = random.randrange(0, 256)
G = random.randrange(0, 256)

# using step allows more control if needed
# for example the value of `100` would return `0`, `100` or `200` only

Rocket.color(R, G, B) ## randomized from values above
_

(_200_、_255_、_23_)のランダム値を使用:

enter image description here

[〜#〜] edit [〜#〜]:「について、タートル。カラーモード()をロケット。カラーモード()次の?"

私がそれを行うことをお勧めする方法は、関数を作成することです:

_def drawColor():

    turtle.colormode(255)

    R = random.randrange(0, 256)
    B = random.randrange(0, 256)
    G = random.randrange(0, 256)

    return R, G, B

Rocket.color(drawColor())
_

これにより、新しい色が必要なときにいつでもdrawColor()を呼び出すことができます。

これで、図面の色をランダム化する基本ができたので、素晴らしい外観の値(整数を好みに合わせて調整)の値を使用して非常に独創的にすることができます。

enter image description here

_#!/usr/bin/python

import turtle, math, random, time

def drawColor(a, b, o):
    turtle.colormode(255)
    R = random.randrange(a, b, o) # last value is step (optional)
    B = random.randrange(a, b, o)
    G = random.randrange(a, b, o)
    # print(R, G, B)
    return R, G, B

def drawRocket(offset):
    Rocket = turtle.Turtle()
    Rocket.speed(0)
    Rocket.color(drawColor(20, 100, 1)) # start (0-256), end (0-256), offset 
    rotate=int(random.randrange(90))
    drawSpecial(Rocket,random.randrange(0, 10), offset)

def drawCircles(t,size):
    for i in range(30):
        t.circle(size)
        size = size - 20

def drawSpecial(t,size,repeat):
    for i in range(repeat):
        drawCircles(t,size)
        t.right(360/repeat)

def drawMain(x, y):
    wn = turtle.Screen()
    wn.bgcolor(drawColor(0, 20, 2))

    for i in range(3): # iterations
        drawRocket(x)
        x+=y
        # print(x)

drawMain(2, 10) # offset, step
input("Press ENTER to exit")
_
17
l'L'l

256の範囲内でランダムな色(RGBを想定)を生成する1つの方法は、 np.random.choice

import numpy as np

color = Tuple(np.random.choice(range(256), size=3))
print(color)

Jpmc26のコメントに従って、Numpyを必要としない別の方法は random.choices Python 3.6+を使用している場合。3つのランダムな整数を作成するためだけにNumpyをインポートするのはやり過ぎなので、これはおそらくより良いオプションです。

import random

color = Tuple(random.choices(range(256), k=3))
print(color)

ランダムRGB出力の例

(248、88、28)

(165、248、150)

(188、29、135)

4
nathancy

random.choiceは、シーケンスからランダムな要素を返します。選択する値を含むリストを渡すだけです。

Rand_color = random.choice(['blue', 'red'])
Rocket.color(Rand_color)
4
Stradivari