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;

}