我正在寻找Julia中计算组合数的(希望是内置)函数。
我可以使用阶乘自己实现,但几乎肯定已经有人考虑过这个问题。
我正在寻找Julia中计算组合数的(希望是内置)函数。
我可以使用阶乘自己实现,但几乎肯定已经有人考虑过这个问题。
很有可能你正在寻找返回二项式系数的binomial
函数。它目前在基础包中。
这里是一些简单示例:
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]
如果您想计算类似于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