|
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>
#include <time.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 = 76
Daljnji 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>
#include <time.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>
#include <time.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>
#include <time.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>
#include <time.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>
#include <time.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
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|