Skip to main content
 首页 » 编程设计

python之在 Python 中模拟随机游走

2025年05月04日17zhengyun_ustc

我正在使用 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。