In un mazzo di 40 carte ne scelgo a caso tre. (1) Qual è la probabilità che tra esse vi sia esattamente un asso? (2) E quella che vi sia almeno un asso?

(1)  Le carte le posso scegliere in C40,3 modi.
Un asso può essere scelto in C4,1 modi mentre le altre 2 carte, che non siano assi (ossia prese tra le 36 rimanenti), possono essere scelte in C36,2 modi. Quindi gli esiti "favorevoli" sono C4,1·C36,2.
In definitiva, la probabilità cercata è C4,1·C36,2/C40,3.
Il calcolo è facile da fare:  4/1·36/2·35/1/(40/3·39/2·38/1) = (4·36·35·3·2)/(2·40·39·38) = (36·35·3)/(10·39·38) = (18·35)/(10·13·19) = 25.51%.
Posso controllare l'esito con questa calcolatrice:

C(4,1) = 4    C(36,2) = 630    C(40,3) = 9880    (4*630/9840)*100 = 25.506072874493928

(2)  Potrei calcolare la somma delle probabilità che ne scelga esattamente 1, che ne scelga esattamente 2 e che ne scelga esattamente 3. Ma conviene ragionare pensanado che l'evento favorevole è la negazione che non esca alcun asso. Se P è la probabilità che non esca alcun asso la probabilità che ne esca almeno uno è 1−P.
Le carte che non sono assi sono 36 e quindi i tre non-assi possono essere scelti in C36,3 modi.
P = C36,3/C40,3 = 36/3·35/2·34/1/(40/3·39/2·38/1) = (36·35·34·3·2)/(3·2·40·39·38) = (9·35·17)/(10·39·19)
1−P = 1−(9·35·17)/(10·39·19) = 27.7%.
Posso controllare l'esito con questa calcolatrice:

C(36,3) = 7140    C(40,3) = 9880    (1-7140/9880)*100 = 27.732793522267208

Per approfondimenti calcolo combinatorio e calcolo delle probabilità.

Vediamo come possiamo studiare il problema con una simulazione con questo semplice script in cui modifico TruthValue nel modo seguente (poi vedremo come usare R).

function TruthValue()
{ with(Math) {

var C = new Array(40);
C[1]=floor(random()*40+1);
for(i=2; i <= 3; 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<=3; i++) {if(C[i]==1 | C[i]==2 | C[i]==3 | C[i]==4) {A=A+1} }
if(A==1) {V=1}

}}

n=10240000 25.499560546875% +/- 0.040861759453748134%
n=5120000 25.521503906249997% +/- 0.05780360134580771%
n=2560000 25.543359375% +/- 0.08176963938963093%
n=1280000 25.519140625% +/- 0.11560371791495312%
n=640000 25.5346875% +/- 0.1635211334662567%
n=320000 25.605% +/- 0.23146280309985298%
n=160000 25.62625% +/- 0.32742737751222256%
n=80000 25.775% +/- 0.4639310240622399%
n=40000 25.76% +/- 0.6559769795083827%
n=20000 25.665% +/- 0.926583200026489%
n=10000 25.41% +/- 1.3061275997890456%
e con questo:
function TruthValue()
{ with(Math) {

var C = new Array(40);
C[1]=floor(random()*40+1);
for(i=2; i <= 3; 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<=3; i++) {if(C[i]==1 | C[i]==2 | C[i]==3 | C[i]==4) {A=A+1} }
if(A>=1) {V=1}

}}

n=10240000 27.731796875% +/- 0.04196951312561699%
n=5120000 27.71970703125% +/- 0.05934588172345176%
n=2560000 27.7148828125% +/- 0.08392325598279%
n=1280000 27.7428125% +/- 0.11872227484332638%
n=640000 27.70234375% +/- 0.16782319051811456%
n=320000 27.7321875% +/- 0.23741680848855082%
n=160000 27.81875% +/- 0.3360807407287141%
n=80000 27.9275% +/- 0.4758606562996438%
n=40000 27.95% +/- 0.6731387415638287%
n=20000 28.505% +/- 0.9576690948625014%
n=10000 28.43% +/- 1.3533088097228387%


# Ecco come potrei trovare conferma "sperimentalmente", con R:
n <- 1e5; c <- 0
for(i in 1:n) { m <- 0; mazzo <- sample(1:40,40); carte <- sample(1:40,3)
 if(carte[1] < 5) m <- m+1; if(carte[2] < 5) m <- m+1; if(carte[3] < 5) m <- m+1;
 if (m==1) c <- c+1; m <- 0}
c/n
# 0.25577
#
n <- 1e5; c <- 0
for(i in 1:n) { m <- 0; mazzo <- sample(1:40,40); carte <- sample(1:40,3)
 if(carte[1] < 5) m <- m+1; if(carte[2] < 5) m <- m+1; if(carte[3] < 5) m <- m+1;
 if (m > 0) c <- c+1; m <- 0}
c/n
# 0.2781