SUPERCAT.DEV

Benvenut* sul mio blog

MATH

11 - Cuori o figure: quando gli eventi si sovrappongono

22-08-2026

Probabilità e combinatoria nei giochi

Prendiamo un mazzo standard di 52 carte, ben mescolato, e peschiamone una.

Vogliamo calcolare:

Qual è la probabilità che la carta sia di cuori oppure una figura?

Assumiamo come figure:

J
Q
K

In un mazzo standard ci sono quindi:

13 cuori

e:

12 figure

La tentazione è sommare:

$$ 13 + 12 = 25 $$

e concludere:

$$ 25/52 $$

Ma sarebbe sbagliato.

Tre carte sono state contate due volte.

Dove nasce il doppio conteggio

Tra le 13 carte di cuori troviamo anche:

J♥
Q♥
K♥

Queste tre carte sono contemporaneamente:

cuori

e:

figure

Quando contiamo i 13 cuori, le abbiamo già incluse.

Quando aggiungiamo le 12 figure, le contiamo una seconda volta.

Il conteggio:

13 + 12

contiene quindi tre duplicati.

Per correggerlo dobbiamo sottrarli una volta:

13 + 12 - 3
=
22

Le carte favorevoli sono dunque:

22

e la probabilità è:

22/52
=
11/26
≈
42,31%

"Oppure" in probabilità è normalmente inclusivo

Nel linguaggio quotidiano la parola "oppure" può essere ambigua.

In probabilità, quando diciamo:

A oppure B

intendiamo normalmente:

A
oppure B
oppure entrambi

Nel nostro caso, una figura di cuori soddisfa perfettamente l'evento:

cuori oppure figura

perché è sia di cuori sia una figura.

Questa interpretazione si chiama OR inclusivo.

Se invece volessimo:

cuori oppure figura, ma non entrambe

staremmo definendo un evento diverso, spesso chiamato OR esclusivo.

È importante capire quale dei due significati richiede la domanda prima di contare.

Unione e intersezione

Indichiamo con:

A = "la carta è di cuori"

e con:

B = "la carta è una figura"

L'evento:

$$ A ∪ B $$

si legge:

A unione B

e contiene tutti gli esiti che appartengono ad A, a B oppure a entrambi.

L'evento:

$$ A ∩ B $$

si legge:

A intersezione B

e contiene soltanto gli esiti che appartengono contemporaneamente ad A e a B.

Nel nostro esempio:

A ∩ B
=
{J♥, Q♥, K♥}

quindi:

$$ |A ∩ B| = 3 $$

Il principio di inclusione-esclusione

Per contare gli elementi dell'unione di due insiemi usiamo:

$$ |A ∪ B| = |A| + |B| - |A ∩ B| $$

Nel nostro caso:

|A ∪ B|
=
13 + 12 - 3
=
22

La stessa idea può essere espressa direttamente in probabilità:

P(A ∪ B)
=
P(A)
+
P(B)
-
P(A ∩ B)

Quindi:

P(cuori oppure figura)
=
13/52
+
12/52
-
3/52

ossia:

22/52
=
11/26
≈
42,31%

Questo è il caso più semplice del principio di inclusione-esclusione.

Perché sottraiamo l'intersezione una sola volta

Nel conteggio:

$$ |A| + |B| $$

gli elementi appartenenti soltanto ad A sono contati una volta.

Quelli appartenenti soltanto a B sono contati una volta.

Gli elementi appartenenti a entrambi sono invece contati due volte.

Sottrarre:

$$ |A ∩ B| $$

una volta li riporta al conteggio corretto:

$$ 2 - 1 = 1 $$

Non li stiamo eliminando dall'unione.

Stiamo soltanto eliminando il doppio conteggio.

Se gli eventi non si sovrappongono

Supponiamo di chiedere:

Qual è la probabilità che una carta sia un asso oppure un re?

Non esiste una carta che sia contemporaneamente asso e re.

Quindi:

$$ A ∩ B = ∅ $$

e:

$$ P(A ∩ B) = 0 $$

La formula diventa:

$$ P(A ∪ B) = P(A) + P(B) $$

In questo caso possiamo semplicemente sommare.

Gli eventi che non possono verificarsi contemporaneamente si chiamano mutuamente esclusivi o disgiunti.

Il punto importante è che la regola:

somma le probabilità

non è sbagliata in sé.

È il caso particolare in cui l'intersezione vale zero.

Non confondiamo eventi disgiunti e indipendenti

Due eventi disgiunti non sono la stessa cosa di due eventi indipendenti.

Se una singola carta è un asso, non può contemporaneamente essere un re. Quindi gli eventi sono disgiunti.

Ma proprio per questo sapere che è uscito un asso rende impossibile che sia anche un re.

Gli eventi non sono indipendenti.

L'indipendenza significa invece che sapere se un evento si è verificato non cambia la probabilità dell'altro.

Sono quindi concetti diversi:

disgiunti
→ non possono accadere insieme

indipendenti
→ uno non modifica la probabilità dell'altro

Questa distinzione evita una delle confusioni più comuni nella probabilità elementare.

Una verifica usando il complementare

Possiamo controllare il risultato anche dal lato opposto.

Le carte che non sono né cuori né figure sono:

52 - 22
=
30

Quindi:

P(cuori oppure figura)
=
1 - 30/52

ossia:

$$ 22/52 = 11/26 $$

Il complementare introdotto negli articoli iniziali continua quindi a essere un ottimo strumento di verifica.

E se volessimo l'OR esclusivo?

La domanda:

cuori oppure figura, ma non entrambe

esclude:

J♥
Q♥
K♥

Le carte di cuori ma non figure sono:

13 - 3
=
10

Le figure che non sono di cuori sono:

12 - 3
=
9

Quindi:

10 + 9
=
19

carte favorevoli.

In forma compatta:

$$ |A △ B| = |A| + |B| - 2|A ∩ B| $$

e nel nostro caso:

13 + 12 - 2·3
=
19

La probabilità sarebbe:

19/52
≈
36,54%

Questo non è l'evento richiesto dal problema principale, ma aiuta a chiarire la differenza tra "oppure inclusivo" e "uno dei due ma non entrambi".

Un esempio con due dadi

Il principio non dipende dalle carte.

Lanciamo due dadi e definiamo:

A = "la somma è 7"

e:

B = "il primo dado mostra 6"

Abbiamo già visto che:

$$ |A| = 6 $$

tra le 36 coppie ordinate.

Per B abbiamo:

(6,1)
(6,2)
(6,3)
(6,4)
(6,5)
(6,6)

quindi:

$$ |B| = 6 $$

L'intersezione contiene soltanto:

(6,1)

perché è l'unico esito in cui il primo dado vale 6 e la somma è 7.

Quindi:

|A ∪ B|
=
6 + 6 - 1
=
11

e:

P(A ∪ B)
=
11/36
≈
30,56%

Ancora una volta, il problema è evitare di contare due volte l'esito condiviso.

Il calcolo in C#

Lo standalone C# associato a questo articolo è:

CuoriOFigure.cs

Possiamo rappresentare un mazzo standard e lasciare che il programma verifichi i conteggi.

enum Seme
{
    Cuori,
    Quadri,
    Fiori,
    Picche
}

enum Valore
{
    Due = 2,
    Tre,
    Quattro,
    Cinque,
    Sei,
    Sette,
    Otto,
    Nove,
    Dieci,
    Jack,
    Donna,
    Re,
    Asso
}

readonly record struct Carta(
    Seme Seme,
    Valore Valore);

Costruiamo il mazzo:

var mazzo = new List<Carta>();

foreach (Seme seme in Enum.GetValues<Seme>())
{
    foreach (Valore valore in Enum.GetValues<Valore>())
    {
        mazzo.Add(new Carta(seme, valore));
    }
}

Ora definiamo i due eventi:

static bool IsCuori(Carta carta) =>
    carta.Seme == Seme.Cuori;

static bool IsFigura(Carta carta) =>
    carta.Valore is
        Valore.Jack or
        Valore.Donna or
        Valore.Re;

e contiamo:

int cuori =
    mazzo.Count(IsCuori);

int figure =
    mazzo.Count(IsFigura);

int intersezione =
    mazzo.Count(c =>
        IsCuori(c) && IsFigura(c));

int unione =
    cuori + figure - intersezione;

Otteniamo:

Cuori:         13
Figure:        12
Intersezione:   3
Unione:        22

Verifichiamo l'unione direttamente

Possiamo contare anche senza usare la formula:

int unioneDiretta =
    mazzo.Count(c =>
        IsCuori(c) || IsFigura(c));

Console.WriteLine(
    unione == unioneDiretta);

Il risultato è:

True

Abbiamo quindi due strategie:

inclusione-esclusione

e:

enumerazione diretta

che producono lo stesso conteggio.

Una funzione generale per due eventi

Possiamo rendere l'idea riutilizzabile.

static double ProbabilitaUnione<T>(
    IEnumerable<T> spazioCampionario,
    Func<T, bool> eventoA,
    Func<T, bool> eventoB)
{
    int totali = 0;
    int a = 0;
    int b = 0;
    int intersezione = 0;

    foreach (T esito in spazioCampionario)
    {
        totali++;

        bool inA = eventoA(esito);
        bool inB = eventoB(esito);

        if (inA)
            a++;

        if (inB)
            b++;

        if (inA && inB)
            intersezione++;
    }

    if (totali == 0)
        throw new ArgumentException(
            "Lo spazio campionario non può essere vuoto.");

    int unione =
        a + b - intersezione;

    return (double)unione / totali;
}

Nel nostro caso:

double p =
    ProbabilitaUnione(
        mazzo,
        IsCuori,
        IsFigura);

Console.WriteLine($"{p:P6}");

otteniamo:

42,307692%

Dal conteggio alla probabilità

L'inclusione-esclusione è un altro esempio della relazione che attraversa tutta la serie:

prima costruiamo correttamente l'insieme degli esiti
poi trasformiamo il conteggio in probabilità

Nel nostro caso:

13 cuori
+
12 figure
-
3 carte condivise
=
22 esiti favorevoli

e quindi:

$$ 22/52 = 11/26 $$

La formula probabilistica non è qualcosa di separato dal conteggio.

È lo stesso ragionamento normalizzato rispetto allo spazio campionario.

Il punto pratico

Quando due eventi possono sovrapporsi, sommare semplicemente le loro probabilità conta due volte gli esiti comuni.

Per questo:

P(A ∪ B)
=
P(A)
+
P(B)
-
P(A ∩ B)

Nel nostro mazzo:

13 cuori
+
12 figure
-
3 figure di cuori
=
22 carte

e quindi:

P(cuori oppure figura)
=
22/52
=
11/26
≈
42,31%

Se l'intersezione è vuota, la formula si riduce alla semplice somma.

Con questo articolo si completa il blocco dedicato a probabilità condizionata, ipergeometrica, binomiale e inclusione-esclusione.

Abbiamo distinto probabilità condizionata, campionamento senza reinserimento, distribuzione ipergeometrica, prove indipendenti binomiali e sovrapposizione di eventi.

Il prossimo passo sarà diverso ancora una volta.

Non ci chiederemo soltanto quanto è probabile vincere, ma quanto vale mediamente una giocata quando vincite e perdite hanno importi diversi.

Questo ci porterà al valore atteso e, per la prima volta, a distinguere chiaramente probabilità di vincita e convenienza matematica di un gioco.