python 3.6中的随机游走模拟

时间:2018-06-07 16:33:51

标签: python-3.x

我一直在尝试使用下面的代码模拟随机游走

import random


    def random_walk(n):
        """ Return coordiantes after 'n' block random walk"""
        x, y = 0, 0
        # y = 0
        for i in range(n):
            (dx, dy) = random.choice([(0, 1), (0, -1), (1, 0), (-1, 0)])
        x = x+dx
        y = y+dy
        return(x, y)


    for i in range(25):
        walk = random_walk(10)
        print(walk, "Distance from origin:",
              abs(walk[0]) + abs(walk[1]))

我总是得到输出为1.无论我增加多少步行或 走了几个街区。我无法弄清楚我做错了什么

1 个答案:

答案 0 :(得分:2)

在第一个for循环中只是一个缩进问题。

import random

def random_walk(n):
    """ Return coordiantes after 'n' block random walk"""
    x, y = 0, 0
    # y = 0
    for i in range(n):
        (dx, dy) = random.choice([(0, 1), (0, -1), (1, 0), (-1, 0)])
        x = x+dx
        y = y+dy
    return(x, y)


for i in range(25):
    walk = random_walk(10)
    print(walk, "Distance from origin:", abs(walk[0]) + abs(walk[1]))