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

R语言如何编写递归函数采样35组两位随机数

R批量生成两位随机数的实现方案

递归写法实现

R原生支持递归函数定义,你需要的计数终止逻辑可以通过给函数增设计数参数、结果存储参数实现:递归调用时累加计数,当计数达到目标采样组数时触发终止条件,直接返回累积的结果即可。
参考实现代码:

# 定义递归采样函数
sample_two_digit_recur <- function(target_group, res = list(), count = 0) {
  # 终止条件:已采样组数达到目标值,整理结果后返回
  if (count == target_group) {
    return(do.call(rbind, res))
  }
  # 生成单组两位随机数
  new_group <- sample(0:9, 2, replace = TRUE)
  # 递归调用:更新结果列表、计数+1
  sample_two_digit_recur(
    target_group = target_group,
    res = c(res, list(new_group)),
    count = count + 1
  )
}

# 调用函数生成35组随机数,可加set.seed固定随机结果方便复现
set.seed(123)
result_35 <- sample_two_digit_recur(35)

上述代码里count参数初始值为0,每完成1组采样就加1,当数值等于你设定的目标组数35时,就会停止递归,不会出现多采样或者无限递归的问题。

更适配R特性的简化写法

R是向量化编程语言,这类批量重复操作不需要写递归,也不需要逐行重复写采样代码,一行就能完成任意组数的采样需求,运行效率比递归高很多:

  • 方法1:一次性生成所有随机数后按组重组
# 总共需要35*2=70个0-9的随机数,重组为35行2列的矩阵,每行对应1组
set.seed(123)
result_simple <- matrix(sample(0:9, 35*2, replace = TRUE), ncol = 2, byrow = TRUE)
  • 方法2:用replicate批量执行单组采样逻辑
set.seed(123)
result_rep <- t(replicate(35, sample(0:9, 2, replace = TRUE)))

如果你需要把每组两个数字拼接为真正的两位整数(例如c(2,9)转为29),直接对结果做向量运算即可:result_simple[,1] * 10 + result_simple[,2]就能得到35个0-99区间的两位整数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:24:25