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

时间:2018-04-30 13:05:45

标签: julia combinatorics counting

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

nChooseK

我显然可以使用阶乘法来实现自己,但我几乎可以肯定有人已经对此感到担忧。

2 个答案:

答案 0 :(得分:16)

您可能正在寻找返回二项式系数的binomial函数。它目前位于base

以下是一些简单的例子:

julia> binomial(2,1)
2

julia> binomial(3,2)
3

如果您想查看实际组合,则可以使用Combinatorics包的combinations(a,n)功能。这为您提供了一个迭代,其中包含数组n的长度a的所有可能组合。

julia> using Combinatorics

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

答案 1 :(得分:2)

如果您想使用二项式的“大”数字(例如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