Caso base
Para $_{N}C_{M}$ donde $M = 1$, T := RandInt(1, J)
se ejecutará con $J = N-M+1 = N$, seleccionando aleatoriamente un elemento $I$ de los $N$ elementos, como se espera para $_{N}C_{1}$. En otras palabras, el caso trivial base es $P_{elegido}(I_{i\in1..N}|_NC_1) = {1 \over N}$, que denotaré usando
$P_{N,1}(I_i) = {1 \over N}
Supuesto inductivo
$P_{N,M}(I_i) = {M \over N}$ para elegir $M$ elementos de $N
Paso inductivo
El paso inductivo es resolver para
$P_{N',M'}(I_i)$ cuando $N'=N+1$ y $M'=M+1$
El paso inductivo se ejecuta en el algoritmo en cada iteración de bucle adicional.
Para elementos $I_{i\in1..N}$
$P_{N',M'}(I_{i\in1..N}) = P_{N,M}(I_i) + \neg P_{N,M}(I_i) * {1 \over N'}$
$P_{N', M'}(I_{i\in1..N}) = "Para elementos $I_i$ excepto $I_{N'}$ en la iteración adicional"
$P_{N,M}(I_i) = "La probabilidad de que $I_i$ ya haya sido elegido anteriormente"
$\neg P_{N,M}(I_i) = "La probabilidad de que $I_i$ aún no haya sido elegido anteriormente"
$1 \over N' = "La probabilidad de que $I_i$ sea elegido en la iteración adicional por RandInt()
"
Sustituir en la hipótesis y simplificar:
$P_{N',M'}(I_{i\in1..N}) = {M \over N} + (1-{M \over N}) * {1 \over N+1}$
$P_{N',M'}(I_{i\in1..N}) = {M+1 \over N+1}
Para el último elemento $I_{N'}$ agregado en la iteración adicional
$P_{N',M'}(I_{i=N+1}) = {1 \over N'} + {M \over N'} = {M+1 \over N+1}
${M \over N'} = "La probabilidad de que uno de los $M$ elementos ya elegidos anteriormente sea elegido nuevamente en la iteración adicional"
Ahora sabemos que para todos los elementos $I_i$ en la iteración adicional
$P_{N',M'}(I_i) = {M+1 \over N+1} = {M' \over N'}
lo que completa el paso inductivo.
Esta demostración funciona porque para cualquier $N'$ y $M'$, el paso inductivo reduce el problema al subproblema, $N=N'-1$ y $M=M'-1$. Eventualmente, $M$ se reducirá a $1$, dándonos el caso base, $_NC_1$.
Dado que el algoritmo garantiza tanto
-
$P(I)={M \over N}$ para todos los elementos $I$
-
Exactamente $M$ de $N$ elementos serán seleccionados
Sabemos que el algoritmo selecciona correctamente una combinación aleatoria de $M$ elementos de un conjunto de $N$ elementos.