0

我想模拟一个实验,你扔一个公平的骰子 100 次并计算数量。我想重复这个实验 10^5 次并保存结果。

这是我掷骰子的n代码

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

x <- dice(100)

接下来,我想计算 1 的个数并模拟 10^5 次(这部分是错误的):

x <- numeric(10^5)

for(n in 1:10^5){
  x[n] <- sum(dice(100)) 
} 

hist(x,
  main="100 Fair Rolls",
  xlab="Rolls",
  ylab="Probability",
  xlim=c(0,100),
  breaks=-1:1000+1,
  prob=TRUE)
4

2 回答 2

1

我认为你非常接近。如果您按如下方式更改 for 循环,它应该可以工作。

for(n in 1:10^5){

  x[n]<-sum(dice(100)==1) 

} 
于 2019-04-23T16:12:37.083 回答
0

如果你计算sum(dice(100)),你会得到所有结果的总和,而不仅仅是那些结果。相反,您应该只返回包含 1 的实验元素:

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

然后您可以使用比 for 循环运行得更快的复制:

x <- replicate(10^5, dice(100))
于 2019-04-23T16:13:41.193 回答