导读
排列数:
从n个不同元素中取出m(m≤n)个元素的所有不同排列的个数。
组合数:
从n个不同元素中取出m(m≤n)个元素的所有不同组合的个数。
一、组合
1 组合数公式

2 R展示所有组合
combn(1:5, 3)

3 R计算组合数
choose(5, 3)

二、排列
1 排列数公式

2 二者关系
只差一个m!

3 R计算排列数
先算阶乘
# 计算m阶乘
factorial(3)

再算排列数=组合数*m!
choose(5, 3) * factorial(3)

三、n个数中取任意个数的组合
1 函数
yield_combine <- function(vec){
vec <- sort(vec)
out_list <- list()
index <- 1
for(i in 1:length(vec)){
sub_com <- combn(vec, i)
for(j in 1:ncol(sub_com)){
out_list[[index]] <- sub_com[, j]
index = index +1
}
}
return(out_list)
}
2 三个数中取任意个数组合
yield_combine(1:3)

网友评论