模拟公平骰子后计算个数的R程序
An R program to count the number of ones after simulating a fair dice
我想模拟一个实验,您掷一个公平的骰子 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)
我认为你非常亲密。如果您按如下方式更改 for 循环,它应该可以工作。
for(n in 1:10^5){
x[n]<-sum(dice(100)==1)
}
如果你计算 sum(dice(100))
你会得到所有结果的总和,而不仅仅是那些结果。
相反,您应该只 return 包含 1:
的实验元素
dice <- function(n) {
x <- sample(c(1:6), n, replace = TRUE)
length(x[x==1])
}
然后你可以使用比for循环运行速度更快的replicate:
x <- replicate(10^5, dice(100))
我想模拟一个实验,您掷一个公平的骰子 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)
我认为你非常亲密。如果您按如下方式更改 for 循环,它应该可以工作。
for(n in 1:10^5){
x[n]<-sum(dice(100)==1)
}
如果你计算 sum(dice(100))
你会得到所有结果的总和,而不仅仅是那些结果。
相反,您应该只 return 包含 1:
dice <- function(n) {
x <- sample(c(1:6), n, replace = TRUE)
length(x[x==1])
}
然后你可以使用比for循环运行速度更快的replicate:
x <- replicate(10^5, dice(100))