Mar*_*kus 2 python random-walk
我必须编写一个代码来计算醉汉步行的路线和长度。
练习:一个酒鬼开始漫无目的地行走,从灯柱处开始。在每个时间步,他随机地向北、向东、向南或向西走一步。N步后,酒鬼离灯柱有多远?为了模拟酒鬼的步数,我们可以用数字对每个方向进行编码,这样当随机变量等于 0 时酒鬼向北移动,如果随机变量等于 1 酒鬼向东移动,依此类推。
编写一个程序,接受一个整数参数 N 并模拟随机游走者的 N 步运动。每一步后,打印随机游走者的位置,将灯柱视为原点 (0, 0)。此外,打印距原点的最终平方距离。
到目前为止,我想出了:
import random
x = 0
y = 0
def randomWalk(N):
for i in range (1, (N)):
a = random.randint
if a == 0:
x = x+0
y = y+1
return (x, y)
print (x, y)
if a == 1:
x = x+1
y = y+0
return (x, y)
print (x, y)
if a == 3:
x = x+0
y = y-1
return (x, y)
print (x, y)
if a == 3:
x = x-1
y = y+0
return (x, y)
print (x, y)
print(randomWalk(input()))
Run Code Online (Sandbox Code Playgroud)
但是当我测试这段代码时,我得到 None 作为输出。
我会很感激你对这个练习的任何帮助。
这是一个好的开始。
主要问题是您无法调用randint:
a = random.randint
Run Code Online (Sandbox Code Playgroud)
这只是变成a了random.randint. 相反,它应该是
a = random.randint(0, 3)
Run Code Online (Sandbox Code Playgroud)
另外,你重复if a == 3:两次。
此外,设置x和y归零应该在函数内部完成,而不是外部。
最后,您的循环(顺便说一下,这是一次太短的迭代)并没有真正起到循环的作用,因为您总是return在第一次迭代期间。
PS 这是给你的一个小小的离别拼图。弄清楚以下是如何工作的:
dx, dy = random.choice([(-1, 0), (1, 0), (0, -1), (0, 1)])
x += dx
y += dy
Run Code Online (Sandbox Code Playgroud)