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

24

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

nChooseK

我可以使用阶乘自己实现,但几乎肯定已经有人考虑过这个问题。


1
小提示:二项式系数计算的是组合数,而不是排列数。 - Alex Riley
1
你是绝对正确的,而且这个差别很重要,因为你把排列视为相同。我会编辑的。 - rodrigolece
2个回答

34

很有可能你正在寻找返回二项式系数的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]

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

2
julia> binomial(big"300", 200) 4158251463258564744783383526326405580280466005743648708663033657304756328324008620 也可以。 - Julia Learner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接