組み合わせの数を計算するジュリアの(うまくいけば組み込みの)関数を探しています
私は明らかに階乗を使用して自分自身を実装することができましたが、誰かがすでにこれについて心配していることはほぼ確実です。
おそらく、二項係数を返す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]
_
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