Random Walks seltsames Ergebnis in Python 3?

Ich fange gerade an, Python zu lernen und habe ein Problem damit, einen neuen Ort für einen zufälligen Spaziergang in drei Dimensionen zu drucken. Es tritt kein Fehler auf, aber es ist offensichtlich, dass die Ausgabe (x, y, z), die gedruckt wird, nicht zumutbar ist! Bei der schrittweisen Simulation eines zufälligen Gehens gehe ich davon aus, dass jeweils nur ein Wert in (x, y, z) geändert werden sollte. Aber es scheint nicht in der Ausgabe. Ich versuche es zu debuggen, bin aber immer noch verwirrt, was das eigentliche Problem ist.

Die Überschriften der Ausgabe:

(0,-1,1)
(-1,0,1)
(-2,0,1)
(-2,1,2)
(-2,2,2)
(-2,2,3)
(-1,2,3)
(0,1,3)

Meine Motivation

Der Zweck dieses Codes besteht darin, N Schritte eines zufälligen Spaziergangs in 3 Dimensionen zu simulieren. Bei jedem Schritt wird eine zufällige Richtung ausgewählt (Nord, Süd, Ost, West, Auf, Ab) und ein Schritt der Größe 1 wird in diese Richtung ausgeführt. Der neue Ort wird dann gedruckt. Der Startort ist der Ursprung (0, 0, 0).

Mein Code:

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))

Umgebung

Python 3.5 in Jupyter Notebook, Windows 10, Dell XPS 13

Antworten auf die Frage(2)

Ihre Antwort auf die Frage