You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言实现回到原点时终止的二维随机游走

二维随机游走修正方案(R语言)

原代码存在的问题

  • 步向矩阵steps构造错误,未正确定义左、右、上、下四种移动方向
  • 随机抽样范围错误(选了1:5,但只有4种步型)
  • 未逐步追踪位置,无法实现"回到原点即终止"的逻辑
  • 错误使用ifelse尝试终止流程,break只能在循环结构中生效

修正后的完整代码

step_max <- 1000

random_walk <- function(max_steps = step_max) {
  # 定义4种移动步向:右(1,0)、左(-1,0)、上(0,1)、下(0,-1)
  steps <- matrix(c(1, 0, -1, 0, 0, 1, 0, -1), nrow = 4, byrow = TRUE)
  # 初始化位置序列,起点为(0,0)
  walk_path <- matrix(c(0, 0), ncol = 2)
  current_pos <- c(0, 0)
  
  for (i in 1:max_steps) {
    # 随机选择一步移动方向
    selected_step <- steps[sample(1:4, 1), ]
    # 更新当前位置
    current_pos <- current_pos + selected_step
    # 将新位置加入路径序列
    walk_path <- rbind(walk_path, current_pos)
    
    # 检查是否回到原点,满足条件则终止游走
    if (all(current_pos == c(0, 0))) {
      break
    }
  }
  
  # 返回完整的位置序列(每行对应一个(x,y)坐标)
  return(walk_path)
}

# 运行游走函数
walk_result <- random_walk()
# 查看前几行位置
head(walk_result)
# 查看最后几行位置
tail(walk_result)

关键逻辑说明

  • 用walk_path矩阵存储每一步的位置,从起点(0,0)开始,每走一步就追加新坐标
  • 逐步循环中实时检查当前位置是否回到(0,0),一旦满足立即终止循环
  • 循环最多执行max_steps次,确保不会无限游走
  • 返回的walk_result是完整的位置序列,包含从起点到终止点的所有(x,y)坐标

内容的提问来源于stack exchange,提问作者Tryingtolearn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:35:41