所以我正在研究一个统计问题,问题是“六个孩子站在一起。按名字的字母顺序排列的可能性是多少?假设没有两个孩子的名字相同。”我在R中使用了sample()和rle()函数,但对如何计算概率感到困惑。我可以帮忙吗?
这也是我到目前为止的代码:
kids <- sample(c("A", "B", "C", "D", "E", "F"), 6, replace = TRUE)
table(kids)
head(kids)
rle(c("A", "B", "C", "D", "E", "F"))
kids.rle <- rle(kids)
str(kids.rle)
sort(kids.rle$lengths, decreasing = TRUE)
答案 0 :(得分:2)
如@YOLO所述,理论概率为1 / 720
,可以用R中的1 / factorial(6)
来计算。但是,您也可以轻松地在脑海中计算出来。如果您想运行一个小的仿真来表明随着重复次数的增加,观察到的概率收敛于理论值,则计算能力会很方便:
kids_ordered <- c("A", "B", "C", "D", "E", "F")
n <- 1000000 # number of repetition
result <- rep(NA, n) # vector to hold outcomes
set.seed(147) # seed for reproducibility
# reorder kids n times and check if the outcome is in alphabetical order each time
for(i in seq_len(n)) {
result[i] <- all(sample(kids) == kids_ordered)
}
# compute the probability
mean(result)
# [1] 0.001376
结果非常接近1 / 720 = 0.001389