python - 在 Python 中模拟随机游走

标签 python random-walk

我正在使用 Python 3。我下面的代码试图模拟一个 random walk 的 N 个步骤。在 3 个维度。在每一步,选择一个随机方向(北、南、东、西、上、下),每个方向的概率为 1/6,并且在该方向上采取大小为 1 的步长。然后打印新位置。起始位置是原点 (0,0)。

即使没有错误消息,代码也不起作用。我们应该在 x、y 或 z 方向移动一步。但是,在输出中,我看到有时我根本不动,或者有时我朝多个方向移动。

这是我的代码:

import random

N = 30

n = random.random() 

x = 0
y = 0
z = 0
count = 0

while count <= N:

    if n < 1/6:
        x = x + 1          
        n = random.random()
    if n >= 1/6 and n < 2/6:
        y = y + 1           
        n = random.random() 
    if n >= 2/6 and n < 3/6:
        z = z + 1           
        n = random.random() 
    if n >= 3/6 and n < 4/6:
        x = x - 1           
        n = random.random() 
    if n >= 4/6 and n < 5/6:
        y = y - 1          
        n = random.random() 
    if n >= 5/6:
        z = z - 1          
        n = random.random()

    print("(%d,%d,%d)" % (x,y,z))
    count = count + 1

print("squared distance = %d" % (x*x + y*y + z*z))

你认为我可以怎样解决这个问题?

非常感谢。

最佳答案

你应该使用 elif 而不是那么多 if。每次评估 if 时,n 的值都会发生变化,然后可能符合下一个 if。

关于python - 在 Python 中模拟随机游走,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46393491/

相关文章:

python - 如何限制django中的 super 用户数量

python - TypeError:setText(self,str):参数1具有意外类型 'tuple'

java - 二维随机游走,Java

numpy - 使用Metropolis-Hastings算法时如何确定步长

python - 起始值和最小值/最大值之间的随机游走序列

theory - 有向加权图游走

python - 为什么在使用 Python 多处理池时会有空闲的工作线程?

python - 使用Python将JSON从文件加载到字典的方法?

python - 在 df.plot(kind ='hist') 中指定 bean 的数量

java - Java版Random walk不收敛到期望值是什么原因?