关于r的问题,求解答

某台阶有n阶,青蛙每次以1/3概率跳一阶,以2/3概率跳二阶。(注:若只剩1级台阶,此时步数+1就是总步数)研究青蛙平均要跳多少步才能爬上台阶。
(1)自编函数,以n(台阶阶数),rep(重复次数)为参数,返回步数平均值。
(2)n=20,rep=5000时,用所编函数计算平均步数。

你好,答案仅供参考,(基本上该注释的都注释了):

my_function <- function(n, rep){#定义函数my_function
  total_time <- 0 #总次数初始化为0
  for(i in 1:rep){ #重复rep次
    s <- 0 #每次初始台阶数
    count <- 0 #每次初始化步数
    while(s<n){ #当台阶数小于n继续爬
      a <- runif(1, min <- 0, max <- 1 ) #随机生成0到1之间的数
      count <- count + 1 #记录步数+1
      if(a<1./3.)s <- s+1 #如果随机数小于1/3,按照1/3概率往上爬1阶台阶
      else s <- s+2 #否则按照2/3概率往上爬2阶台阶
    }
    total_time <- total_time + count #每一次爬台阶记入总步数中
  }
  avg_time <- total_time/rep #计算平均步数
  return (avg_time) #返回平均
}
# 以下为调用函数部分
n <- 20
rep <- 5000
avg_step <- my_function(n,rep)#调用函数
print(avg_step)#打印平均所用步数

由于是随机的,这里打印的结果仅供参考用:

12.2318

前面是自编函数,后面是调用函数,有帮助还望给个采纳支持答主哦