The drawTarget() function makes it easy to draw many distinct targets. Each call to drawTarget() specifies the position, size, and number of rings for each target.

def setup():
    size(640, 360)
    background(51)
    noStroke()
    noLoop()


def draw():
    drawTarget(width * 0.25, height * 0.4, 200, 4)
    drawTarget(width * 0.5, height * 0.5, 300, 10)
    drawTarget(width * 0.75, height * 0.3, 120, 6)


def drawTarget(xloc, yloc, size, num):
    grayvalues = 255 / num
    steps = size / num
    for i in range(num):
        fill(i * grayvalues)
        ellipse(xloc, yloc, size - i * steps, size - i * steps)