一个R程序,用于在模拟公平骰子后计算位数

时间:2019-04-23 16:08:40

标签: r statistics probability-distribution

我要模拟一个实验,在该实验中,您将一个骰子扔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)

2 个答案:

答案 0 :(得分:1)

我想你离得很近。如果您按以下方式更改for循环,则它应该可以工作。

-mllvm -debug-only=asan

答案 1 :(得分: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))