什么是计算组合的 Julia 函数(n 选择 k)?

What is the Julia function to count combinations (n choose k)?

我正在寻找 Julia 中计算组合数的(希望是内置的)函数

我显然可以使用阶乘实现我自己的,但我几乎可以肯定有人已经担心过这个。

您可能正在寻找 returns 二项式系数的 binomial 函数。目前在 base

这里有一些简单的例子:

julia> binomial(2,1)
2

julia> binomial(3,2)
3

如果您想查看实际组合,则可以使用 Combinatorics 包的 combinations(a,n) 函数。这为您提供了一个可迭代的数组 a.

的长度 n 的所有可能组合
julia> using Combinatorics

julia> collect(combinations(1:3,2))
3-element Array{Array{Int64,1},1}:
 [1, 2]
 [1, 3]
 [2, 3]

如果你想取 "big" 数字的二项式,比如 200

,请注意使用 BigInt
julia> binomial(3,2)
3

julia> binomial(300,200)
ERROR: OverflowError: binomial(300, 200) overflows
Stacktrace:
 [1] binomial(::Int64, ::Int64) at ./intfuncs.jl:876
 [2] top-level scope at none:0

julia> binomial(BigInt(300),BigInt(200))
4158251463258564744783383526326405580280466005743648708663033657304756328324008620