学生们站成一排

时间:2018-12-07 22:29:15

标签: r statistics probability

所以我正在研究一个统计问题,问题是“六个孩子站在一起。按名字的字母顺序排列的可能性是多少?假设没有两个孩子的名字相同。”我在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)

1 个答案:

答案 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