Può essere utile avere a disposizione una funzione che restituisce delle distribuzioni probabilistiche.
La più semplice è la distribuzione uniforme che tutti i linguaggi di programmazione rendono disponibile, la celeberrima funzione “random”.
Ricavare la distribuzione uniforme desiderata da questa funzione è decisamente semplice (esempio di codice in C++) .
//**********************************************************************************///Generatore pseudo-casuale di numeri a virgola mobile singola precisione//con distribuzione UNIFORME fra 0 e 1//**********************************************************************************/float DistrUnif(void){ //La costante RAND_MAX è una costante di sistema!!!!! return (float)((double)rand()/(double)RAND_MAX);}//**********************************************************************************///Generatore pseudo-casuale di numeri a virgola mobile singola precisione//con distribuzione ESPONENZIALE NEGATIVA fra 0 e infinito//**********************************************************************************/float DistrEsponenzNeg(void){ //Procedura basata sul metodo di inversione return (-logf(1.0f-DistrUnif()));}//**********************************************************************************///Generatore pseudo-casuale di numeri a virgola mobile singola precisione//con distribuzione GAUSSIANA a MEDIA NULLA e VARIANZA UNITARIA//**********************************************************************************/float DistrGaussStd (void){ //Procedura basata sul calcolo della Gaussiana bi-dimensionale double r = sqrt(2.0*DistrEsponenzNeg()); double t = 2*CV_PI*DistrUnif(); return (float)(r*cos(t));}//**********************************************************************************///Generatore di rumore gaussiano bianco (media nulla)// IN:// sigma : la varianza del rumore da generare//**********************************************************************************/float GaussWhiteNoise (float sigma=1){ return (sigma*DistrGaussStd());}