/* generatori random 'umani' per uniforme discreta e continua Versione in cui le funzioni definite dopo main() -> i 'prototype' delle funzioni vanno dichiarati prima */ #include #include // per la random #include // per il seed // --- dichiariamo le funzioni, il cui sorgente รจ in fondo ---- void setRandomSeed( unsigned RandomSeed); int irunif(int min, int max); float frunif(float min, float max); int main() { int i; unsigned seed; printf("Dai un seed (intero >= 0; se == 0 si usa il tempo) : "); scanf("%u", &seed); setRandomSeed(seed); // proviamo la random uniforme intera for(i=0; i<10; i++) { printf(" %d \n", irunif(1, 6) ); // per giocarci a dadi ... } for(i=0; i<10; i++) { printf(" %f \n", frunif(0, 10) ); } return 0; } //--- funzioni (ricordarsi di dichiarale prima di main!) ---- void setRandomSeed( unsigned RandomSeed) { time_t t; if (RandomSeed == 0 ) { // se == 0 si usa il tempo RandomSeed = (unsigned) time(&t); } printf("seed %u\n", RandomSeed ); srand( RandomSeed ); } int irunif(int min, int max) { if(min >= max) return(0); return( min + rand() % (max-min+1) ); } float frunif(float min, float max) { float rzerouno; if(min >= max) return(0); rzerouno = (float) rand() / (float) RAND_MAX; return( min + rzerouno * (max-min) ); }