abc Programski jezik C
Primjer: 1. Generisati dvocifren broj i ispisati na ekran Opis rješenja: n = rand() % (max_broj + 1 - minimum_broj) + minimum_broj // minimum_broj - najmanja vrijednost, // max_broj - najvaća vrijednost) // generiše n u intervalu minimum_broj <= n <= max_broj za interval 10 <= n <= 99 (dvocifren broj) (max_broj + 1 - minimum_broj) + minimum_broj (99 + 1 - 10) + 10 n = rand() % 90 + 10 Listing programa: // 06421112 #include <stdio.h> #include <stdlib.h> int main () { int i; time_t t; /* Inicijalizacija generatora slucajnog broja RND */ srand((unsigned) time(&t)); /* Ispis random dvocifren broj (10<= n <= 99) */ printf("Slučajan dvocifren broj = %d\n", rand() % 90 + 10); return(0); } Ispis na ekranu: Slučajan dvocifren broj = 76Daljnji rad: Generisati trocifren slučajan broj.
Primjer: 2. Generisati cjelobrojne brojeve od 1 do 9. Ispisati koliko puta se pojavljuje vrijednost maksimalnog broja 9 za 100 generisanih brojeva. Opis rješenja: Minimum_broj - najmanja vrijednost intervala = 1, a max_broj - najvaća vrijednost = 9. Formula za slučaja broj n u intervalu 1 <= n <= 9: n = rand() % (max_broj + 1 - minimum_broj) + minimum_broj n = rand() % (9 + 1 - 1) + 1 n = rand() % 9 + 1 Listing programa: #include <stdio.h> #include <stdlib.h> int main () { int i, max_broj, n; time_t t; /* Inicijalizacija generatora slucajnog broja RND */ srand((unsigned) time(&t)); max_broj = 9; // gornja granica for ( i = 1; i <= 100; i++) { // ponavljanje za i=1 do i=5 - pocetak petlje n = rand() % 9 + 1; // od 1 do 9 if (n == max_broj) // našao max_broj vrijednost? printf("i = %d Generisana max broj %d\n", i, n); // ispis vrijednosti i \n ima za posljedicu prelazak u novi red } return(0); } Ispis na ekranu: i = 3 Generisana max broj 9 i = 6 Generisana max broj 9 i = 24 Generisana max broj 9 i = 68 Generisana max broj 9 i = 70 Generisana max broj 9 i = 87 Generisana max broj 9 i = 92 Generisana max broj 9 i = 99 Generisana max broj 9 i = 100 Generisana max broj 9
Primjer: 3. Generisati realne brojeve od 8 do 25 pet puta. Opis rješenja: Minimum_broj - najmanja vrijednost intervala = 8, a max_broj - najvaća vrijednost = 25. Formula za slučaja broj n u intervalu 8 <= n <= 25: max2 = (max_broj - min_broj); // opseg vrijednosti generisanih brojava sl_broj = max2 * ((float)rand()/(float)RAND_MAX) + min_broj; Listing programa: #include <stdio.h> #include <stdlib.h> int main () { int i, n; time_t t; n = 5; float min_broj = 8; // minimalna vrijednost RND float max_broj = 25; // maksimalna vrijednost RND float max2; // opseg vrijednosti generisanih brojava float sl_broj; // slucajan broj /* Inicijalizacija generatora slucajnog broja RND */ srand((unsigned) time(&t)); printf("RND od %.1f do %.1f\n", min_broj, max_broj); /* Ispis 5 random brojeva (0<= n <= 1) */ for( i = 0 ; i < n ; i++ ) { max2 = (max_broj - min_broj); // opseg vrijednosti generisanih brojava sl_broj = max2 * ((float)rand()/(float)RAND_MAX) + min_broj; printf("i = %d Slucajan broj = %lf\n", i, sl_broj); } return(0); } Ispis na ekranu: RND od 8.0 do 25.0 i = 0 Slucajan broj = 19.919920 i = 1 Slucajan broj = 15.155198 i = 2 Slucajan broj = 8.012959 i = 3 Slucajan broj = 14.605600 i = 4 Slucajan broj = 12.912069
Primjer: 4. Generisati realne brojeve od 10 do 100 pet puta. max2 = (max_broj - min_broj); // opseg vrijednosti generisanih brojava sl_broj = max2 * ((float)rand()/(float)RAND_MAX) + min_broj; #include <stdio.h> #include <stdlib.h> int main () { int i, n; time_t t; n = 5; float min_broj = 10; // minimalna vrijednost RND float max_broj = 100; // maksimalna vrijednost RND float max2; // opseg vrijednosti generisanih brojava float sl_broj; // slucajan broj /* Inicijalizacija generatora slucajnog broja RND */ srand((unsigned) time(&t)); printf("RND od %.1f do %.1f\n", min_broj, max_broj); /* Ispis 5 random brojeva (0<= n <= 1) */ for( i = 0 ; i < n ; i++ ) { max2 = (max_broj - min_broj); // opseg vrijednosti generisanih brojava sl_broj = max2 * ((float)rand()/(float)RAND_MAX) + min_broj; printf("i = %d Generisana vrijednost %lf\n",i, sl_broj); } return(0); } Ispis na ekranu: RND od 10.0 do 100.0 i = 0 Generisana vrijednost 98.704796 i = 1 Generisana vrijednost 51.379852 i = 2 Generisana vrijednost 20.929836 i = 3 Generisana vrijednost 30.610159 i = 4 Generisana vrijednost 81.214699
Primjer: 5. Generisati realne slučajne brojeve od 8 do 25 i naći najpribližniju vrijednost navedenom max tj. 25 u 555555 pokušaja. max2 = (max_broj - min_broj); // opseg vrijednosti generisanih brojava sl_broj = max2 * ((float)rand()/(float)RAND_MAX) + min_broj; #include <stdio.h> #include <stdlib.h> int main () { int i, n; time_t t; n = 555555; float min_broj = 8; // minimalna vrijednost RND float max_broj = 25; // maksimalna vrijednost RND float max2, sl_broj, tmax; // uvacanje RND, slucajan broj /* Inicijalizacija generatora slucajnog broja RND */ srand((unsigned) time(&t)); printf("RND od %.1f do %.1f\n", min_broj, max_broj); /* Ispis 5 random brojeva (0<= n <= 1) */ tmax = 0.0; for( i = 0 ; i < n ; i++ ) { max2 = (max_broj - min_broj); // opseg vrijednosti generisanih brojava sl_broj = max2 * ((float)rand()/(float)RAND_MAX) + min_broj; if (tmax < sl_broj) { tmax = sl_broj; printf("i = %d Slucajan broj = %lf\n", i, sl_broj); } } return(0); } Ispis na ekranu: RND od 8.0 do 25.0 i = 0 Slucajan broj = 24.295332 i = 4 Slucajan broj = 24.336065 i = 15 Slucajan broj = 24.860085 i = 355 Slucajan broj = 24.911072 i = 714 Slucajan broj = 24.943844 i = 1073 Slucajan broj = 24.992603 i = 3195 Slucajan broj = 24.992624 i = 5026 Slucajan broj = 24.998327 i = 15232 Slucajan broj = 24.999699 i = 29753 Slucajan broj = 24.999931 i = 252044 Slucajan broj = 24.999979
Primjer: 6. Generisati realne brojeve od 10 do 100. Ispisati broj koji je najbliži vrijednosti 100. max2 = (max_broj - min_broj); // opseg vrijednosti generisanih brojava sl_broj = max2 * ((float)rand()/(float)RAND_MAX) + min_broj; #include <stdio.h> #include <stdlib.h> int main () { int i, n; time_t t; n = 555555; float min_broj = 10; // minimalna vrijednost RND float max_broj = 100; // maksimalna vrijednost RND float max2, sl_broj, tmax; // uvacanje RND, slucajan broj /* Inicijalizacija generatora slucajnog broja RND */ srand((unsigned) time(&t)); printf("RND od %.1f do %.1f\n", min_broj, max_broj); /* Ispis 5 random brojeva (0<= n <= 1) */ tmax = 0.0; for( i = 0 ; i < n ; i++ ) { max2 = (max_broj - min_broj); // opseg vrijednosti generisanih brojava sl_broj = max2 * ((float)rand()/(float)RAND_MAX) + min_broj; if (tmax < sl_broj) { tmax = sl_broj; printf("i = %d Slucajan broj = %lf\n", i, sl_broj); } } return(0); } Ispis na ekranu: RND od 10.0 do 100.0 i = 0 Slucajan broj = 67.790833 i = 2 Slucajan broj = 94.106117 i = 20 Slucajan broj = 97.253372 i = 22 Slucajan broj = 99.591690 i = 321 Slucajan broj = 99.941551 i = 471 Slucajan broj = 99.974579 i = 3171 Slucajan broj = 99.991508 i = 66264 Slucajan broj = 99.996140 i = 69015 Slucajan broj = 99.999359 i = 218578 Slucajan broj = 99.999840 i = 403301 Slucajan broj = 99.999847
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|