R 我的公平骰子模拟不会输出10个介于1和6之间的随机数

R 我的公平骰子模拟不会输出10个介于1和6之间的随机数,r,statistics,dice,R,Statistics,Dice,我已经创建了一个公平骰子模拟,但是当我运行它时,10个元素中只存储了一个。我需要所有的10个随机数在1到6之间 dice<-function(n){ a<-numeric(n) for(m in 1:n){ b=sample(1:6, size = n, replace = TRUE) } if(1==b){ a[m]<-1 } else if(2==b){ a[m]<-2 } else if(3==b){ a[m]<-3 } else if(4==b){

我已经创建了一个公平骰子模拟,但是当我运行它时,10个元素中只存储了一个。我需要所有的10个随机数在1到6之间

dice<-function(n){

a<-numeric(n)

for(m in 1:n){

b=sample(1:6, size = n, replace = TRUE)

}
if(1==b){
a[m]<-1
}

else if(2==b){
a[m]<-2
}
else if(3==b){
a[m]<-3
}
else if(4==b){
a[m]<-4
}
else if(5==b){
a[m]<-5
}
else if(6==b){
a[m]<-6
}
a
}


x<-dice(10)

dice我不明白你为什么要写这么多额外的代码,而这已经足够了:

# Throwing dice 10 times.
sample(c(1:6),10,replace = TRUE)
[1] 4 5 2 5 5 2 2 4 6 3
作为一项功能:

dice <- function(n) {
  sample(c(1:6),n,replace = TRUE)
}

你为什么不澄清你以前的帖子,而不是问一个新问题:?
sample(1:6,size=n,replace=TRUE)
是模拟n次公平模具试验所需的全部。我不知道您的代码的其余部分应该做什么。imo这个函数有多个问题。产生不需要的输出的第一个问题是您在for循环之外分配值,因此它从1计数到n,在每次迭代中产生随机数。在最后一次迭代之后,它检查条件并将值分配给最后一个元素。你不必在之后做全部的if-else条件,你可以将值设置为:a当你在示例函数中有size属性时,为什么要使用replicate?好的,我的大脑在另一个谜题中,一周前我帮一个朋友解决了,在我们使用复制的地方,我会修正它。你知道怎么做吗:做一个实验,你掷一个公平的骰子100次,然后数一数。此外,必须重复实验10^5次,并存储结果。这就是我到目前为止得到的:x
table(dice(100))
 1  2  3  4  5  6 
11 19 15 12 20 23