web-dev-qa-db-fra.com

Quelle est la fonction de Julia pour compter les combinaisons (n ​​choisissez k)?

Je cherche la fonction (intégrée, espérons-le) de Julia qui calcule le nombre de combinaisons

nChooseK

Je pourrais évidemment mettre en œuvre ma propre factorielle, mais je suis presque certain que quelqu'un s'est déjà inquiété à ce sujet.

9
rodrigolece

Il est fort probable que vous recherchiez la fonction binomial qui renvoie le coefficient binomial. Il est actuellement dans base

Voici quelques exemples simples:

Julia> binomial(2,1)
2

Julia> binomial(3,2)
3

Si vous voulez voir les combinaisons réelles, vous pouvez utiliser la fonction combinations(a,n) du package Combinatorics. Cela vous donne un itérable avec toutes les combinaisons possibles de longueur n de tableau a.

Julia> using Combinatorics

Julia> collect(combinations(1:3,2))
3-element Array{Array{Int64,1},1}:
 [1, 2]
 [1, 3]
 [2, 3]
16
niczky12

Sachez que vous devez utiliser BigInt si vous voulez prendre un binôme de "gros" nombres comme 200

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