Как продолжать генерировать случайные числа из другого класса, чем класс, для которого вы используете числа - PullRequest
0 голосов
/ 03 ноября 2019

Мне нужно продолжать генерировать случайные ускорения для моего случайного движения в моем мозговом классе, чтобы изменить направление и возможность клонировать движение из моих точек, но верно, оно генерирует одно число и продолжает прибавлять его к моей скорости. точка движется по прямой линии. Как мне это исправить.

Я не очень старался, потому что просто не знаю, как это сделать. Я новичок, поэтому я просто не знаю конкретный код.

def wander(self):
        if self.pos[0] < 5 or self.pos[0] > WIDTH - 5 or self.pos[1] < 5 or self.pos[1] > HEIGHT - 5:
            self.vel = 0
        else:
            self.vel = self.vel + acc
            self.pos = self.pos +self.vel



#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

class brain:
    acc = 0.02 * np.random.random(2) - 0.01



#--------------------------------------------------------------------------

dots = []
for i in range(200): #generate n cells
    Dot = dot()
    dots.append(Dot)

#--------------------------------------------------------------------------

def mainloop():
    while True:
        for event in pygame.event.get():
            if event.type== QUIT: #if pressing the X, quit the program
                pygame.quit() #stop pygame
                sys.exit() #stop the program
        screen.fill((0,0,0)) #clear the screen;
        for i in dots: #update all dots
            i.wander()
            i.draw()
        pygame.display.update() #update display
mainloop()

1 Ответ

0 голосов
/ 03 ноября 2019

Прямо сейчас вы инициализируете свой класс brain (весь класс, даже не каждый экземпляр отдельно) одним общим значением acc - так вы выбираете одно случайное число, а затем используете его для всегожизнь вашей программы, что делает ее совсем не случайной. (Для другого примера этого явления: https://xkcd.com/221/)

Попробуйте что-то вроде:

class Brain:
    def __init__(self):
        self.acc = 0.0

    def think(self):
        self.acc = 0.02 * np.random.random(2) - 0.01

и затем обязательно вызовите think() в начале wander, или любой другойвремя мозг должен обновить себя.

...