>>>>>

Scheda 2 - Misure di probabilità, variabili casuali e leggi di distribuzione

4. LEGGI di DISTRIBUZIONE di variabili in INTERVALLI di numeri reali. La legge UNIFORME. Ancora su RND.

    La "funzione a 0 argomenti" RND del QBasic (e random() di JavaScript) si comporta come un fenomeno casuale che si distribuisce uniformemente in [0,1): se classifico le uscite in sottointervalli uguali ottengo un istogramma che, all'aumentare del numero delle prove, tende ad appiattirsi, ovvero, se J è un sottointervallo di [0,1), la frequenza relativa di "RNDJ" tende a stabilizzarsi intorno ad un valore pari all'ampiezza di J.

    Per questo, se indico con la variabile casuale U il valore che assume RND man mano che questa parola chiave viene incontrata nel corso dell'esecuzione di un programma, posso assumere come modello matematico del comportamento di RND la misura di probabilità Pr così definita:

se J è un sottointervallo di [0,1), Pr(UJ) = (ampiezza di J).

    Data una variabile casuale di tipo numerico X a cui sia associato come insieme di possibili uscite un intervallo I di numeri reali, si dice che dotiamo X di una legge di distribuzione ogni volta che, in qualche modo, descriviamo come calcolare i valori di una misura di probabilità Pr su tutti gli eventi del tipo XJ con J sottointervallo di I.

    Questa legge viene chiamata legge di distribuzione uniforme se I è limitato e, indicato con J un generico sottointervallo di I, Pr(XJ) è proporzionale all'ampiezza di J. Se I ha come estremi a e b e J è un suo sottointervallo:

       ampiezza di J 
Pr(XJ) =  —————
                        b - a

Nota 1. Se c è un numero che cade in I, si ha Pr(X=c)=0 in quanto [c,c] ha ampiezza 0. Ciò non vuol dire che l'evento X=c sia impossibile, cioè che, qualunque valore assuma X, la relazione X=c sia falsa. Analogamente Pr(Xc)=1–Pr(X=c)=1–0=1 anche se Xc non è un evento certo (sarebbe certo se, qualunque valore assumesse X, la relazione Xc fosse falsa).

    La legge di distribuzione uniforme è solo un modello matematico del comportamento di RND, non lo rappresenta esattamente:

 RND non può assumere come valori tutti i numeri reali dell'intervallo [0,1) ma solo un sottoinsieme dell'insieme dei numeri macchina contenuti in tale intervallo, e questi sono in quantità finita in quanto sono descrivibili con sequenze di bit di lunghezza fissata;

 inoltre i valori che assume RND, inevitabilmente (stiamo usando un computer), non si susseguono in modo "casuale", ma sono generati in un dato ordine (x1, x2, x3, …, xN) da un algoritmo che, dopo una quantità finita N di valori – vari milioni nel caso del QBasic –, ritorna a generare il valore iniziale x1 e poi x2, x3, … (più avanti - scheda 8 - vedremo di che algoritmo si tratta); per questo motivo RND (o, meglio, l'algoritmo che ne calcola i valori) viene chiamato anche generatore di numeri pseudocasuali;

 se rieseguiamo più volte il programma del quesito 7 otteniamo sempre le stesse 10 uscite: ogni volta che si avvia l'esecuzione di un programma l'algoritmo si predispone a generare la stessa sequenza x1, x2, x3, …, xN, x1, x2, … di numeri pseudocasuali.

Nota 2. Per cambiare il numero pseudocasuale di partenza si può usare l'istruzione RANDOMIZE intero che, a seconda del numero intero impiegato, sceglie, con un particolare procedimento, il valore xi da cui avviare la generazione. Affinché il programma scelga "a caso" il valore di partenza, come argomento dell'istruzione randomize si può usare TIMER, cioè il numero dei secondi trascorsi dall'avvio del computer.

<<<     Paragrafo precedente Paragrafo successivo     >>>