R中sample函数中的多变量
我试图使用sample函数来生成数字“3”的次数,如果我“掷骰子”N次,就会出现数字“3”。 例如,如果我想要N次之后数字3的频率。但是我试着在N次之后,N+10,N+20,直到N+200。 换句话说,数字3在10,20,30,40之后的频率。。。210卷。 但是,不是每次都复制代码并更改N的值,有没有更有效的方法来做到这一点? 这就是代码:R中sample函数中的多变量,r,sampling,dice,R,Sampling,Dice,我试图使用sample函数来生成数字“3”的次数,如果我“掷骰子”N次,就会出现数字“3”。 例如,如果我想要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_
N=10
e1= sample(1:6,N,rep=T)
e11=(e1==3)
sum_e11=sum(e11)
relative_freq= sum_e11/N
relative_freq
这是一个涵盖这两种选择的解决方案。为您最初发布的单个示例方法设置
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)})
relative_freq您可以使用sapply
和seq
运行10,20,30,40。。。210
set.seed(7)
sapply(seq(10,210,10), function(N) sum(sample(1:6, N, replace=TRUE) == 3)/N)
# [1] 0.3000000 0.2500000 0.1000000 0.1250000 0.1400000 0.1666667 0.1714286
# [8] 0.1250000 0.1444444 0.0800000 0.1727273 0.1916667 0.1461538 0.1857143
#[15] 0.1666667 0.1437500 0.1588235 0.1888889 0.1631579 0.1800000 0.2285714
如果您只计划为每个尺寸绘制一个样本N
,那么结果将不会是准确的相对频率。您需要取相同大小的多个样本的平均值N
。否则,您当前的方法仅显示可以滚动多少个3。这很好,但是有没有更好的方法来检查所有滚动(N+10等),而不是每次我希望更改N时复制并通过代码?