uint8_t addnoise(uint8_t sym, double amp, double gain){ double sample; sample = 127.5 + gain * normal_rand(sym ? amp : -amp, 1.0); if (sample < 0.) sample = 0.; else if (sample > 255.0) sample = 255.0; return (uint8_t) sample; }
int main(void) { srand(time(NULL)); params_t params={1.0,2.0}; // on choisit la moyenne à 1.0 et l'equart type à 2.0 { /* test de l'implémentation */ double y= uniform_rand(); /* y */ double x = quantile(y,params); /* F(x)=y */ printf("y= %.15f; F(%.15f)= %.15f\n", y, x, cumulative_normal_distribution(x, params)); /* on vérifie bien que y= F(x) */ } /* générer les X */ for(size_t i=0;i<MAX;++i) { random_variables[i] = normal_rand(params); // on génère un tableau de X et on les affiche au fur et à mesure. Ces nombres aléatoires suivent la loi normale. printf("%0.5f\n",random_variables[i]); } return 0; }