Gjenerimi i numrave te rastit
Tema 6.7 Gjenerimi i numrave te rastit fq 220
Funksioni qe ben te mundur gjenerimin e numrave te rastesishem (pseudo-random) nga kompjuteri eshte funksioni rand() i cili deklarohet ne librarine <cstdlib>
Per te perdorur kete funksion duhet shtuar ne fillim te programit
#include<cstdlib>
ose #include<stdlib.h> //per visual c++
Funksioni rand zgjedh nje numer te rastit nga 0 ne NR_MAX = 32767
Nje difekt i funksionit rand eshte se ne ekzekutime te ndryshme zgjedh gjithmone te njejtet numra.
Per kete arsye para perdorimit te tij duhet perdorur funksioni srand() i cili inicializon gjeneruesin e numrave random.
Ky funx merr si argument nje numer te cilin mund ta japim nga tastiera.
psh:
int n;
cin>>n;
srand(n);
Nese ne dy ekzekutime te ndryshme funksioni srand merr te njejtin argument funksioni rand do te zgjedhe te njejtat vlera.
Per te bere te mundur qe funksioni srand() ne ekzekutime te ndryshme te marre gjithmone argumenta te ndryshem (Pra qe te mos e japim ne nga tastiera) perdorim instruksionin:
srand(time(0));
ose
srand(time(NULL));
ku time(0) jep numrin aktual te sekondave ne kohen e ekzekutimit e cila ndryshon automatikisht ne ekzekutime te ndryshme (sipas ores se kompjuterit).
Per kete duhet shtuar ne fillim te programit edhe libraria <ctime>
#include<ctime>
ose #include<time.h> tek visual c++
// Shembull
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int s;
/*cin>>s;
srand(s);*/
srand(time(0));
for ( int i = 1; i <= 20; i++ ) {
cout << setw( 10 ) << ( 1 + rand() % 6 );
if ( i % 5 == 0 )
cout << endl;
}
system("pause");
return 0;
}
Tema 6.8 Rast studimi: Nje loje shanci. Perdorimi i "enum" fq 225
"enum" eshte nje tip i percatuar nga vete perdoruesi (user-defined type) qe konsiston ne nje bashkesi konstantesh te emertuara qe njihen si numerues.
Shembull:
// Fig. 6.11
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int hedhZaret( void ); //prototipi i funksionit
int main()
{
enum Gjendja { VAZHDON, FITON, HUMBET };
int Shuma, piket;
Gjendja Gjendja_lojes;
srand( time( NULL ) );
Shuma = hedhZaret(); // hedhja e pare
switch ( Shuma ) {
case 7:
case 11: // fiton ne hedhjen e pare
Gjendja_lojes = FITON;
break;
case 2:
case 3:
case 12: // humbet ne hedhjen e pare
Gjendja_lojes = HUMBET;
break;
default: // ruhen piket
Gjendja_lojes = VAZHDON;
piket = Shuma;
cout << "Piket jane " << piket << endl;
break; // opspionale
}
while ( Gjendja_lojes == VAZHDON ) { // hidhet zari perseri
Shuma = hedhZaret();
if ( Shuma == piket ) // fiton nese hedh te njejtin numer sa piket e ruajtura
Gjendja_lojes = FITON;
else
if ( Shuma == 7 ) // humbet nese hidhet 7
Gjendja_lojes = HUMBET;
}
if ( Gjendja_lojes == FITON )
cout << "Lojtari fiton" << endl;
else
cout << "Lojtari humbet" << endl;
system("pause");
return 0;
}
int hedhZaret( void )
{
int zari1, zari2, shuma_zareve;
zari1 = 1 + rand() % 6;
zari2 = 1 + rand() % 6;
shuma_zareve = zari1 + zari2;
cout << "Lojtari hodhi zaret " << zari1
<< " + " << zari2
<< " = " << shuma_zareve << endl;
return shuma_zareve;
}