Un mazzo di 40 carte, ben mescolate, viene diviso, "del tutto a caso", in due parti eguali. Con che probabilità in entrambe le parti vi è lo stesso numero di carte nere e di carte rosse?

Non è un problema facilissimo.
Intanto determino quanti sono i modi in cui posso dividere il mazzo, ossia quanti sono i modi in cui posso scegliere 20 carte tra 40:  C40,20.
Devo poi calcolare quanti sono i modi in cui posso formare 20 carte (una delle due parti) pescandone 10 rosse e 10 nere. Automaticamente anche le altre 20 carte saranno 10 rosse e 10 nere.
10 carte rosse tra 20 posso sceglierle in C20,10 modi; analogamente 10 carte nere posso sceglierle in C20,10 modi.
In definitiva la probabilità cercata è C20,10·C20,10/C40,20.
Sono numeri molto grandi, su cui non ha senso cercare di operare a mano. Usiamo il computer. Possiamo usare questa calcolatrice o WolframAlpha, ottenendo:  C(20,10)*C(20,10)/C(40,20) = 0.2476288654360908556391... = [arrotondando] 24.76%

Se voglio posso controllare il risultato studiando il problema con una simulazione (cosa che è utile fare, anche per controllare il procedimento: una cosa tipica di molti problemi probabilistici è che spesso è più facile modellizzare il problema e studiarlo sperimentalmente che risolverlo formalmente).  Usiamo un programmino in JavaScript, software che è incorporato in tutti i browser. Basta andare qui: http://macosa.dima.unige.it/js/js.htm (puoi vedere anche qui), cliccare "macosa.dima.unige.it/js.com" e mettere nella finestra in alto quanto segue  (in C ho messo le carte - numerate, da 1 a 40):

<pre><script> with(Math) {
n=1e3; x=0; for(i=0; i<n; i=i+1)
 {C = new Array(40); C[1]=floor(random()*40+1); for(j=2; j<=20; j=j+1)
   { U=0; while(U<1) { C[j]=floor(random()*40+1); U=1; for(k=1;k<j;k=k+1) {if(C[k]==C[j]) U=0} } }
 s=0; A=0; for(j=1;j<=20;j=j+1) if(C[j]<=20) A=A+1; if(A==10) s=1; x=x+s}
document.writeln ("n=",n,"  fr = ", x/n*100,"%")
n=n*10; x=0; for(i=0; i<n; i=i+1)
 {C = new Array(40); C[1]=floor(random()*40+1); for(j=2; j<=20; j=j+1)
   { U=0; while(U<1) { C[j]=floor(random()*40+1); U=1; for(k=1;k<j;k=k+1) {if(C[k]==C[j]) U=0} } }
 s=0; A=0; for(j=1;j<=20;j=j+1) if(C[j]<=20) A=A+1; if(A==10) s=1; x=x+s}
document.writeln ("n=",n,"  fr = ", x/n*100,"%")
n=n*10; x=0; for(i=0; i<n; i=i+1)
 {C = new Array(40); C[1]=floor(random()*40+1); for(j=2; j<=20; j=j+1)
   { U=0; while(U<1) { C[j]=floor(random()*40+1); U=1; for(k=1;k<j;k=k+1) {if(C[k]==C[j]) U=0} } }
 s=0; A=0; for(j=1;j<=20;j=j+1) if(C[j]<=20) A=A+1; if(A==10) s=1; x=x+s}
document.writeln ("n=",n,"  fr = ", x/n*100,"%")
} </script></pre>

        Ottengo:

n=1000  fr = 25.1%
n=10000  fr = 24.59%
n=100000  fr = 24.828%

        Con 1 milione di prove posso avere:

n=1000000  fr = 24.7739%

        Posso prendere l'arrotondamento 24.8%,


Posso controllare il risultato anche con questo altro script in cui modifico TruthValue nel modo seguente.

function TruthValue()
{ with(Math) {

var C = new Array(40);
C[1]=floor(random()*40+1);
for(i=2; i <= 20; i++)
  { U=0; while(U < 1) { C[i]=floor(random()*40+1); U=1; for(j=1; j < i; j++) { if(C[j]==C[i]) {U=0} } } }
V=0; A=0; for(i=1; i<=20; i++) {if(C[i]<=20) {A=A+1} }
if(A==10) {V=1}

}}

n=640000 24.76390625% +/- 0.16186550334407687%
n=320000 24.7678125% +/- 0.2289246794266651%
n=160000 24.81875% +/- 0.32397190072722704%
n=80000 24.76% +/- 0.4578030578704094%
n=40000 24.8625% +/- 0.64833199786316%
n=20000 24.75% +/- 0.9154991982187078%
n=10000 24.2% +/- 1.284947123001912%

Vediamo come potremmo usare R (vedi).

# Un sottoprogramma che simula il problema dell'es. un generico numero di volte:
calc <- function(volte) {OK <- 0; for(v in 1:volte) {
  # Metto in y in ordine casuale i primi 40 numeri interi positivi:
  y <- sample(1:40)
  # Considero neri i numeri da 1 a 20 e rossi quelli da 21 a 40
  # Controllo se tra i primi 20 vi sono 10 neri, ossia numeri minori di 21
k <- 0; for(i in 1:20) if(y[i] < 21) k <- k+1; if(k==10) OK <- OK+1}; OK/volte*100}
#
calc(1e2)
# 25
calc(1e3)
# 24.5
calc(1e4)
# 24.6
calc(1e5)
# 24.777
calc(1e6)
# 24.753

OK
# Vedi qui per una valutazione pi  efficiente.