Python随机游走项目:如何设置Mi-Ma向南行走频率为其他方向两倍
随机游走代码调整方案
调整逻辑说明
你需求的核心是Mi-Ma选择向南方向的概率是其他方向的2倍,每步行走距离统一为1格,对应你的代码框架只需要修改两个点即可:
第一步:统一所有方向的单步位移为1格
检查RandomWalker类的方向定义,确保向南的步长和其他方向一致,都是1格,不要设置为2格:
class RandomWalker: directions = dict( North=[0, +1], South=[0, -1], # 这里y轴位移保持-1即可,不要修改为-2 East=[+1, 0], West=[-1, 0], )
第二步:配置Mi-Ma的方向选择权重
random.choices方法的weights参数直接按比例控制各方向的选中概率,你只需要把Mi-Ma的向南权重设置为其他方向的2倍即可。找到get_walkers静态方法里的Mi-Ma实例化代码,确认参数配置如下:
walkers = { 'Pa': RandomWalker('Pa', 1, 1, 1, 1, 'black', 'circle'), # 第一个参数对应向北权重=1,第二个参数对应向南权重=2,东、西权重各为1 'Mi-Ma': RandomWalker('Mi-Ma', 1, 2, 1, 1, 'green', 'square'), 'Reg': RandomWalker('Reg', 0, 0, 1, 1, 'red', 'triangle'), }
这个配置下四个方向总权重为1+2+1+1=5,向南的选中概率为2/5,其他三个方向各为1/5,刚好满足向南概率是其他方向2倍的需求。
效果验证
你现有代码的take_walk方法已经原生支持按权重分配方向选择概率,不需要额外修改逻辑,调整完上述两个位置后运行代码即可得到符合需求的仿真结果。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

