Я ввел счетчик для простого тестирования, но вы можете просто пойти с бесконечным циклом.Это будет на 1 назад или дальше, чем последний шаг, или останется на последнем шаге.
import random
def markov(start: int):
step = start
count = 0
while count<20:
step = random.randint(step-1, step+1)
yield step
count += 1
Вы можете проверить, хотите ли вы, например, list(markov(1))
.Если вы всегда хотите, чтобы он двигался, я бы заменил step = random.randint(step-1, step+1)
на step = random.choice([step-1, step+1])
.