gpt4 book ai didi

python - 在 python 中约束随机游走,如何让它工作?

转载 作者:行者123 更新时间:2023-12-04 14:59:20 27 4
gpt4 key购买 nike

这是我编写的随机游走代码,我试图将其限制在 -5 <y < 5 的位置:

import random
import numpy as np
import matplotlib.pyplot as plt
import math
import decimal

def dirs(x):
return np.array( [math.cos(x), math.sin(x)] )

def constrainedRandomWalk(x):
numSteps = x
locations = np.zeros( (numSteps, 2) )
for i in range(1, numSteps):
r = random.randrange(628318)/100000
move = dirs(r)
locations[i] = locations[i-1] + move
if -5<locations[i][1]<5:
continue
#return locations

plt.figure(figsize=(8,8))
plt.plot( locations[:,0], locations[:,1], alpha=0.7 );
plt.xlim([-20,20])
plt.ylim([-20,20])

我试图通过在循环上设置条件来限制“步行角色”

 if -5<locations[i][1]<5:
continue

但是,正如您在这里看到的,角色离开了 -5 Plot Generated From Random Walk

谁能告诉我如何实际约束随机游走以及为什么这种方法不起作用?谢谢!

最佳答案

在测试移动是否有效之前,您正在更新 locations:

import math
import random

import matplotlib.pyplot as plt
import numpy as np


def dirs(x):
return np.array([math.cos(x), math.sin(x)])


def constrained_random_walk(num_steps):
# Specify Start Point
locations = [np.array([0, 0])]
# Go Until locations is long enough
while len(locations) < num_steps:
r = random.randrange(628318) / 100000
move = dirs(r)
# Test if the new move is in bounds first
new_location = locations[-1] + move
if -5 < new_location[1] < 5:
locations.append(new_location)

locations = np.array(locations)
plt.figure(figsize=(8, 8))
plt.plot(locations[:, 0], locations[:, 1], alpha=0.7)
plt.xlim([-20, 20])
plt.ylim([-20, 20])

示例输出:

constrained_random_walk(2000)

Sample Constrained Random Walk


编辑:已更新,因此所有跳过的值都不是 (0,0),但 locations 中的每个值都由生成的移动填充。除了第一个,它被指定为起点。 (当前(0,0))

关于python - 在 python 中约束随机游走,如何让它工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67260356/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com