根据提示,在右侧编辑器补充代码,完善有墙的二维随机游走,使得“游走者”不能走出矩形区域 A=[xL,xH][yL,yH]。设考虑 np 个粒子初始位置在原点,在有墙的二维随机游走 ns 步,我们设置 xL=yL=− ns ,xH=yH= ns (墙边界可以是浮点值)。 请你编写函数 random_walk2D_barrier(np, ns),返回 np 个粒子随机游走 ns 步后平均位置的估算值。 提示:首先执行一个方向上的移动。然后测试新位置是否在 A 外。如果在 A 外,则把其这个方向上的位置设置为矩形区域边界值。 要求:产生随机数时使用 numpy 中的函数 randint(1,5),且每次调用仅产生一个随机数,随机值与方向的对应关系如下:NORTH = 1; SOUTH = 2; WEST = 3; EAST = 4。
时间: 2024-02-15 14:05:32 浏览: 35
```python
import numpy as np
NORTH = 1
SOUTH = 2
WEST = 3
EAST = 4
def random_walk2D_barrier(np, ns):
xL, xH, yL, yH = -ns, ns, -ns, ns
sum_x, sum_y = 0, 0
for i in range(np):
x, y = 0, 0
for j in range(ns):
direction = np.random.randint(1, 5)
if direction == NORTH:
y += 1
elif direction == SOUTH:
y -= 1
elif direction == WEST:
x -= 1
elif direction == EAST:
x += 1
if x < xL:
x = xL
elif x > xH:
x = xH
if y < yL:
y = yL
elif y > yH:
y = yH
sum_x += x
sum_y += y
return sum_x/np, sum_y/np
```
阅读全文