Aux fanas du calcul probabiliste.
Python 3.

Une fonction "combinaisons" fondée sur une des nombreuses propriétés du triangle de Pascal, elle ne récurre que sur p.

def cnp(n,p):
if p>0:
return int(cnp(n,p-1)/p*(n-p+1))
return 1


Et donc la fonction "Loi hypergéométrique"
Np=Nombre population
Sp=Succès population
Ne=Nombre échantillon
Se=Succès échantillon

def lhg(Se,Ne,Sp,Np):
return cnp(Np-Sp,Ne-Se)/cnp(Np,Ne)*cnp(Sp,Se)

Le contrôle de cohérence sera fait avant appel