Resultado estranho da caminhada aleatória em python 3?
Acabei de começar a aprender python e tenho um problema para imprimir um novo local de passeio aleatório em 3 dimensões. Não há erro aparecendo, mas é óbvio que a saída (x, y, z) impressa não é razoável! Ao simular uma caminhada aleatória passo a passo, presumo que apenas um valor em (x, y, z) deva ser alterado a cada vez. Mas parece que não está na saída. Estou tentando depurá-lo, mas ainda confuso sobre identificar qual é o verdadeiro problema.
As linhas principais da saída:
(0,-1,1)
(-1,0,1)
(-2,0,1)
(-2,1,2)
(-2,2,2)
(-2,2,3)
(-1,2,3)
(0,1,3)
Minha motivação:
O objetivo deste código é simular N etapas de uma caminhada aleatória em 3 dimensões. Em cada etapa, uma direção aleatória é escolhida (norte, sul, leste, oeste, cima, baixo) e uma etapa do tamanho 1 é executada nessa direção. O novo local é impresso. O local inicial é a origem (0, 0, 0).
Meu código:
import pdb
import random # this helps us generate random numbers
N = 30 # number of steps
n = random.random() # generate a random number
x = 0
y = 0
z = 0
count = 0
while count <= N:
if n < 1/6:
x = x + 1 # move east
n = random.random() # generate a new random number
if n >= 1/6 and n < 2/6:
y = y + 1 # move north
n = random.random() # generate a new random number
if n >= 2/6 and n < 3/6:
z = z + 1 # move up
n = random.random() # generate a new random number
if n >= 3/6 and n < 4/6:
x = x - 1 # move west
n = random.random() # generate a new random number
if n >= 4/6 and n < 5/6:
y = y - 1 # move south
n = random.random() # generate a new random number
if n >= 5/6:
z = z - 1 # move down
n = random.random() # generate a new random number
print("(%d,%d,%d)" % (x,y,z))
count = count + 1
print("squared distance = %d" % (x*x + y*y + z*z))
Meio Ambiente:
Python 3.5 no notebook Jupyter, Windows 10, Dell XPS 13