Глава 15 • Генерирование данных
Случайное блуждание
В этом разделе мы используем Python для генерирования данных для случайного
обхода, а затем при помощи Мatplotlib создадим привлекательное представление
сгенерированных данных.
Случайным блужданием (random walk) называется путь,
который не имеет четкого направления, но определяется серией полностью случай-
ных решений. Представьте, что муравей сошел с ума и делает каждый новый шаг
в случайном направлении; его путь напоминает случайное блуждание.
Случайное блуждание находит практическое применение в естественных науках:
физике, биологии, химии и экономике. Например, пыльцевое зерно на поверх-
ности водяной капли движется по поверхности воды, потому что его постоянно
подталкивают молекулы воды. Молекулярное движение в капле воды случайно,
поэтому путь пыльцевого зерна на поверхности представляет собой случайное
блуждание. Код, который мы напишем, найдет применение при моделировании
многих реальных ситуаций.
Создание класса RandomWalk()
Чтобы создать путь случайного блуждания, мы напишем класс
RandomWalk
, который
принимает случайные решения по выбору направления. Классу нужны три атрибу-
та: переменная для хранения количества точек в пути и два списка для координат
x
и
y
каждой точки.
Класс
RandomWalk
содержит всего два метода:
__init__()
и
fill_walk()
для вычис-
ления точек случайного блуждания. Начнем с метода
__init__()
:
random_walk.py ❶
from random import choice
class RandomWalk():
"""Класс для генерирования случайных блужданий."""
❷
def __init__(self, num_points=5000):
"""Инициализирует атрибуты блуждания."""
self.num_points = num_points
# Все блуждания начинаются с точки (0, 0).
❸
self.x_values = [0]
self.y_values = [0]
Чтобы принимать случайные решения, мы сохраним возможные варианты в списке
и используем функцию
choice()
из модуля
random
для принятия решения
. Затем
для списка устанавливается количество точек по умолчанию, равное 5000, — до-
статочно большое, чтобы генерировать интересные закономерности, но достаточно
малое, чтобы блуждания генерировались быстро
. Затем в точке
создаются
два списка для хранения значений
x и
y , после чего каждый путь начинается с точ-
ки (0, 0).
Случайное блуждание
331 Выбор направления
Метод
fill_walk()
, как показано ниже, заполняет путь точками и определяет на-
правление каждого шага. Добавьте этот метод в
random_walk .py
: