我剛開始學習python,並有一個問題,打印一個新的位置隨機遊走三維。彈出沒有錯誤,但顯然輸出(x,y,z)被打印是不合理的!在逐步模擬隨機遊走時,我假設每次只改變(x,y,z)中的一個值。但它似乎不在輸出中。我試圖調試它,但仍然困惑於確定真正的問題是什麼。在python 3中隨機遊走的奇怪結果?
輸出的頭行:
(0,-1,1)
(-1,0,1)
(-2,0,1)
(-2,1,2)
(-2,2,2)
(-2,2,3)
(-1,2,3)
(0,1,3)
我的動機:
此代碼的目的是模擬的隨機遊動的3種 尺寸N個步驟。在每個步驟中,選擇一個隨機方向(北,南,東,西,上,下),並在該方向上採用大小爲1的步驟。然後打印新的位置。起始位置是原點(0,0,0)。
我的代碼:
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))
環境:
的Python 3.5 Jupyter筆記本電腦時,Windows 10,戴爾XPS 13
注在Python中,'n> = 2/6和n <3/6'可以拼寫成'2/6 <= n <3/6' – Eric