首页 > 解决方案 > R中样本函数中的多个变量

问题描述

我正在尝试使用示例函数来产生数字“3”的次数,如果我“掷骰子”N 次就会出现。例如,如果我想要 N 次后数字 3 的频率。但我试图在 N 次之后执行此操作,N +10,N+20 直到 N+200。换句话说,数字 3 在 10、20、30、40 ... 210 之后出现的频率。但不是每次都复制代码并更改 N 的值,有没有更有效的方法来做到这一点?所以这是代码:

N=10
e1= sample(1:6,N,rep=T)
e11=(e1==3)
sum_e11=sum(e11)
relative_freq= sum_e11/N
relative_freq 

标签: rsamplingdice

解决方案


这是一个涵盖这两个选项的解决方案。为您最初发布的单个示例方法设置iterations = 1。迭代次数越多,频率在数学上就越准确。该sapply函数将在从 10 到 200 的序列中的每个值处运行该函数,乘以 10。

relative_freq <- function(target,N,iterations=10000){
  result <- logical(iterations)
  for(i in 1:iterations){
    samp <- sample(1:6,N,replace=TRUE)
    result[i] <- sum(samp==target)
  }
  mean(result)
}

relative_freq(3,10)
relative_freq(3,20,1)

sapply(seq(10,200,by=10),function(n){relative_freq(3,n)})

推荐阅读