web-dev-qa-db-ja.com

組み合わせを数えるジュリア関数は何ですか(nはkを選択)?

組み合わせの数を計算するジュリアの(うまくいけば組み込みの)関数を探しています

nChooseK

私は明らかに階乗を使用して自分自身を実装することができましたが、誰かがすでにこれについて心配していることはほぼ確実です。

12
rodrigolece

おそらく、二項係数を返す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]
_
18
niczky12

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
4
Steven Siew