【问题标题】:What is the Julia function to count combinations (n choose k)?计算组合的 Julia 函数是什么(n 选择 k)?
【发布时间】:2018-10-10 14:09:18
【问题描述】:

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

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

【问题讨论】:

  • 小注:二项式系数计算组合,而不是排列。
  • 你是绝对正确的,区别很重要,因为你计算的排列是相同的。我会编辑。

标签: julia combinatorics counting


【解决方案1】:

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

【讨论】:

    【解决方案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
    

    【讨论】:

    • julia> binomial(big"300", 200) 4158251463258564744783383526326405580280466005743648708663033657304756328324008620 也可以。
    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    相关资源
    最近更新 更多