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

rod*_*ece 10 counting combinatorics julia

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

nChooseK

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

nic*_*y12 18

您可能正在寻找binomial返回二项式系数的函数.它目前在基地

以下是一些简单的例子:

julia> binomial(2,1)
2

julia> binomial(3,2)
3
Run Code Online (Sandbox Code Playgroud)

如果要查看实际组合,则可以使用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]
Run Code Online (Sandbox Code Playgroud)


Ste*_*iew 5

如果您想对“大”数字(如 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
Run Code Online (Sandbox Code Playgroud)

  • `julia> 二项式(big"300", 200) 415825146325856474478338352632640558028046600574364870866303365730475632832040 (2认同)