あなたが探している情報は、この日記には記されていない可能性が高いです。(検索で来た人用)
にらどんは一杯500円。尚、出前は承っておりません。ご了承下さい。

ぷろじぇくとぱぺぴあ

というわけで解決編。
例の式は何を表しているのか、完全に把握しました。

// いろんなとこに載ってる計算式
"初期手札にn枚の確率" = nCm(card, n) * nCm(deck - card, draw - n) / nCm(deck, draw);

// 分解して見ると

A = "投入枚数のうち、n枚を選び取った時の組み合わせ" = nCm(card, n);
// これにより、手札の中に欲しいカードが何枚あるのか既に決定しています。つまりn枚。

B = "残りの手札の組み合わせ" = nCm(deck - card, draw - n);
// 手札からn枚を除いた、つまり意識していないカードの組み合わせを計算します。
// この引数をx,yと置いたとき、上の式はnCm(deck - x, draw - y)となり相互互換です。

C = "手札の組み合わせ" = nCm(deck, draw);
// 言うまでも無くデッキからdraw枚を引いたとき、その手札の組み合わせ。

"手札に希望カードがn枚あるときの手札組み合わせ" = A * B;
"その組み合わせを全体の組み合わせで割る" = A * B / C;
よ=っ=て = "初期手札にn枚だけ存在する確率" = nCm(card, n) * nCm(deck - card, draw - n) / nCm(deck, draw);


// 応用もあるでよ
// 手札に必要枚以上、投入枚数以下ある時の確率
// 投入枚数までの各"手札存在枚数"を足すことで計算できるんだなも。
more = "必要枚数";
for(int cnt = more; cnt < card; cnt++)
	sum += nCm(card, cnt) * nCm(deck - card, draw - cnt) / nCm(deck, draw);

// さらにっ
for(int cnt1 = more1; cnt1 < card1; cnt1++)
	for(int cnt2 = more2; cnt2 < card2; cnt2++)
		sum += nCm(card1, cnt1) * nCm(card2, cnt2) * nCm(deck - card1 - card2, draw - cnt1 - cnt2) / nCm(deck, draw);
// というのもおそらく可能。
// なにやってるかっつーと、異なる種類のカードがそれぞれ手札にn枚あるときの確率。このループでは2種類。
// カイバーマンはあるけどブルーアイズがない!っていう確率がわかるぴょん。

結論:nCmを発明した奴は頭が3つある。