Example #1
0
  /**
   * @param n total elements
   * @param k chosen elements
   * @return Binomial coefficient n choose k
   */
  public static double choose(double n, double k) {
    n = Math.floor(n + 0.5);
    k = Math.floor(k + 0.5);

    final double lchoose =
        GammaFunction.lnGamma(n + 1.0)
            - GammaFunction.lnGamma(k + 1.0)
            - GammaFunction.lnGamma(n - k + 1.0);

    return Math.floor(Math.exp(lchoose) + 0.5);
  }
Example #2
0
 public static double logChoose(final int n, final int k) {
   return GammaFunction.lnGamma(n + 1.0)
       - GammaFunction.lnGamma(k + 1.0)
       - GammaFunction.lnGamma(n - k + 1.0);
 }