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

R语言生成无连续重复随机数 满足零件寿命测试目的地序列需求

问题核心错误点
  • 逻辑倒置:原代码if判断相邻值相等时直接保留重复值,不等时才重新生成,与需求完全相反
  • 随机数范围错误:runif(1, min=1, max=10)的取值区间为左闭右开,floor处理后最多只能得到9,无法生成10这个目的地值
  • 无重复重试机制:单次重新生成仍有可能得到重复值,没有循环校验直到生成合法值
  • 冗余代码:R的for循环会自动遍历给定序列的所有值,手动写i <- i +1不会改变循环变量取值,属于无效代码
修正后完整代码
# 可直接将测试值50改为实际需要的15000次
iterations <- 50 
LSVmin <- 1
LSVmax <- 10

# 初始化存储序列的向量,用vector比matrix更适合单维数据
movementV <- vector(length = iterations)
# 初始第一个目的地设为10,可根据需求修改
movementV[1] <- 10

for (i in 2:iterations) {
  # 预生成第一个随机值
  new_pos <- floor(runif(1, min = LSVmin, max = LSVmax + 1))
  # 只要新值和上一个值相等,就重新生成
  while (new_pos == movementV[i-1]) {
    new_pos <- floor(runif(1, min = LSVmin, max = LSVmax + 1))
  }
  # 确认不重复后赋值
  movementV[i] <- new_pos
}
代码逻辑说明
  • 调整了随机数生成的max参数为LSVmax + 1,保证floor处理后可以覆盖1到10的所有目的地值
  • 新增while循环做重复校验:每次生成新值后和上一个位置的目的地比对,只要重复就持续重新生成,直到得到不重复的合法值再赋值,从根源上避免相邻重复
  • 改用vector存储序列,相比matrix更适合单维的移动序列场景,后续导出到电机控制程序也更方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 18:54:02